このバインディングは機能しないため、何かが欠けています。これは学習目的のためです。これを改善する方法がわかっている場合は、教えてください。しかし、それ以外にも、なぜこれが機能しないのかを知りたいと思っています。
私のMainWindow中にはCheckBox、コマンドがバインドされた があります: checkCommand。
RootViewModel.csで:
public Command checkCommand { get; set; }
public RootViewModel()
{
checkCommand = new Command(mark);
}
private void mark()
{
myThingsCollection[0].marked= true;
}
このコマンドは正常に機能しており、 の状態も に変更しますmarked(trueこれを でテストしましたMessageShowBox)。
以前に UC をObsevableCollection<UC>( ) に追加し、 MainWindow.csでこの方法でmyThingsCollectionバインドしました。ItemsControl
<ItemsControl ItemsSource="{Binding myThingsCollection}">
<DataTemplate> <!--I've ommited some parts here--!>
<local:UC/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
UC は正しく表示されます。
markedのプロパティですUCViewModel:
class UCViewModel
{
#region Implementation of INotifyPropertyChanged
private bool _marked;
public bool marked
{
get
{
return _marked;
}
set
{
_marked= value;
OnPropertyChanged("marked");
}
}
}
そのUserControl( UC) には、次のCheckBoxようにバインドする があります。
<CheckBox Content="Hello!" IsChecked="{Binding marked}"/>
そして、DataContextこのように設定します(UC.cs.xamlの背後にあるコードで)
public UC()
{
UCViewModel context = new UCViewModel();
DataContext = context;
InitializeComponent();
}
しかし、うまくいきません。何が欠けているのかわからない。ところで、これはこの問題に対する適切なアプローチではないと確信しています。もっと簡単な方法はありますか? ありがとう