我在这个绑定中遗漏了一些东西,因为它不起作用。这是出于学习目的,如果您看到如何改进,请告诉我。但除此之外,我也有兴趣知道为什么这不起作用。
在我MainWindow有CheckBox一个绑定到它的命令:checkCommand.
在RootViewModel.cs中:
public Command checkCommand { get; set; }
public RootViewModel()
{
checkCommand = new Command(mark);
}
private void mark()
{
myThingsCollection[0].marked= true;
}
这个命令工作正常,它也改变了markedto的状态true(我已经用 a 测试过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();
}
但它不起作用。我不知道它缺少什么。顺便说一句,我很确定这不是解决这个问题的好方法,有没有更简单的方法?谢谢