このバインディングは機能しないため、何かが欠けています。これは学習目的のためです。これを改善する方法がわかっている場合は、教えてください。しかし、それ以外にも、なぜこれが機能しないのかを知りたいと思っています。
私の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();
}
しかし、うまくいきません。何が欠けているのかわからない。ところで、これはこの問題に対する適切なアプローチではないと確信しています。もっと簡単な方法はありますか? ありがとう