我在这个绑定中遗漏了一些东西,因为它不起作用。这是出于学习目的,如果您看到如何改进,请告诉我。但除此之外,我也有兴趣知道为什么这不起作用。
在我的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>
(myThingsCollection
)并在 MainWindow.cs <中将其绑定到ItemsControl
/ p>
<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();
}
但它不起作用。我不知道它遗失了什么。顺便说一句,我很确定这不是解决这个问题的好方法,有没有更简单的方法?感谢
答案 0 :(得分:0)
下载链接:Here
^^链接应该有一个项目,你正在做的一切工作正常。
如果您正在寻找改进代码的建议,请参考:
MyThingsCollection
不应该是UserControl
的集合,但它们应该是其VM的集合答案 1 :(得分:0)
如果您确定您的视图模型实现,请尝试更改绑定语法。
IsChecked="{Binding path=marked, Mode=TwoWay}"