2016-04-30 2 views
0

MVVMアプローチを使用すると、リストボックスと、リストボックスのSelectedItemに関する情報を表示するグリッドを含むビューがあります。私はグリッドのDataContextをSelectedItemに設定したい。ContentControlのDataTemplateにあるListBoxのSelectedItemへのバインド

ただし、ListBoxは次のように埋められます。ListBoxを含むUserControlビューであるDataTemplateにバインドされたContentControl。ここで

は、私がバインドするかどうかはわかりませんことをメインウィンドウのグリッドである:ここでは

<Grid DataContext="{Binding ElementName=MyList, ????}"> 

はContentControlには同じビューである:ここでは

<ContentControl x:Name="MyList" 
       Content="{Binding}" 
       ContentTemplate="{StaticResource MyListTemplate}"/> 

は同じでデータ・テンプレートであります表示:

<Window.Resources> 
     <DataTemplate x:Key="MyListTemplate"> 
      <v:MyListView/> 
     </DataTemplate> 
    </Window.Resources> 

ここではMyListViewをあります

<UserControl> 
    <ListBox Name="MyListBox" ItemsSource="{Binding ItemList}"/> 
</UserControl> 

私は数年前に書いたコードに追加していますが、しばらくWPFから離れていますので、悲しいかな、私はデータバインディングに錆びています。 MyListViewおよび/またはMainWindowのビューモデルにSelectedItemプロパティを追加しようとしています。 RelativeSourceが必要な場合があります。

答えて

0

Doh!私は自分のプロパティのOnPropertyChanged呼び出しを指定するのを忘れていました。ユーザーコントロールのListBoxで

が、私はこれを必要:メインウィンドウのビューモデルで

ItemsSource="{Binding ItemList}" SelectedItem="{Binding MySelectedItem}" 

を、私はこれを必要:

public MyItemViewModel MySelectedItem 
{ 
    get { return _mySelectedItem; } 
    set 
    { 
     _mySelectedItem = value; 
     OnPropertyChanged("MySelectedItem"); 
    } 
} 

そして、メインウィンドウで、バインディングは単純です:

<Grid DataContext="{Binding MySelectedItem}"> 
関連する問題