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