0

さまざまな情報を持っている顧客のリストがあります。名前のリストボックスがあります。エントリを選択すると、画面に顧客に関する詳細情報が表示されます。ユーザーの名前をクリックして詳細情報を表示するときに、別の画面に「移動」したいと思います。これを達成するために、エントリに関する情報を次の画面に渡す方法がわかりません。

これは、ユーザーが最初に選択するリストボックスです。

<ListBox x:Name="scheduleListBox" 
     ItemTemplate="{DynamicResource ItemTemplate}" 
     ItemsSource="{Binding Collection}" 
     Margin="8,8,8,0" 
     Style="{DynamicResource ListBox-Sketch}" 
     Height="154" 
     VerticalAlignment="Top"/>

これが、クリックして他の画面に移動できるTextBlockです。これは、ユーザーがリストボックスから選択した内容に基づいて変更されます。

<TextBlock Text="{Binding Customer}" 
     HorizontalAlignment="Left" 
     VerticalAlignment="Top" 
     Width="150" Margin="104,0,0,0"    
     Style="{DynamicResource BasicTextBlock-Sketch}">
     <i:Interaction.Triggers>
         <i:EventTrigger EventName="MouseLeftButtonDown">
             <pi:NavigateToScreenAction  TargetScreen="V02Screens.Customer_Status"/>
         </i:EventTrigger>
     </i:Interaction.Triggers>
</TextBlock>

ExpressionBlend4またはXAMLでできることがあるといいのですが。

4

2 に答える 2

0

NavigateWPFでは、次のページに表示したいデータなど、必要なものを含むオブジェクトをコマンドに提供できます。次に、ターゲット ページ (移動先のページ) で、読み込み完了イベントを処理する必要があります。

最初のページでは、次のようにナビゲートできます...

this.NavigationService.Navigate( somePage, someContainerObject );

次に、 somePage でそれを取得する可能性があります...

// Don't forget to subscribe to the event!
this.NavigationService.LoadCompleted += new LoadCompletedEventHandler(container_LoadCompleted);
...
void container_LoadCOmpleted( object sender, NavigationEventArgs e)
{
   if( e.ExtraData != null )
      // cast e.ExtraData and use it
}
于 2012-08-09T20:14:57.333 に答える
0

Windows 8 では、オブジェクト全体を受信ページに渡すことができます。

このような:

// main page
private void ListBox_SelectionChanged_1
    (object sender, SelectionChangedEventArgs e)
{
    var _Item = (sender as ListBox).SelectedItem;
    Frame.Navigate(typeof(MainPage), _Item);
}

// detail page
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    this.DataContext = e.Parameter;
}

WPF と SL では、View Model に SelectedItem への参照を保存できます。

// main page
private void ListBox_SelectionChanged_1
    (object sender, SelectionChangedEventArgs e)
{
    var _Item = (sender as ListBox).SelectedItem;
    MyModel.SelectedItem = _Item;
    // TODO: navigate
}

// detail page
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    this.DataContext = MyModel.SelectedItem;
}

これが役立つことを願っています。

于 2012-08-09T17:35:26.787 に答える