【发布时间】:2013-06-02 04:52:19
【问题描述】:
我在这个绑定中遗漏了一些东西,因为它不起作用。这是出于学习目的,如果您看到如何改进,请告诉我。但除此之外,我也很想知道为什么这不起作用。
在我的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
<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();
}
但它不起作用。我不知道它缺少什么。顺便说一句,我很确定这不是解决这个问题的好方法,有没有更简单的方法?谢谢
【问题讨论】:
-
-.- [...] 但它不起作用。 [...] - 非常有用,就像“我的应用程序崩溃了”。来吧,你必须提供更多的细节。您是否在 VS 的调试输出窗口中收到任何
BindingExpression错误?顺便说一句,Command这是一个自定义类吗? -
是的,Command 是启用命令的自定义类。我看不到 BindingExpression 错误。我再检查一下。
-
我已在设置、输出窗口中将 DataBinding Trace 设置为“全部”。但我找不到显示错误的位置。它们是否显示在与正常错误相同的位置?如果是这样,则没有任何错误。
-
不,如果您指的是正常错误输出窗口,则它们不是,其中显示了编译错误。调试 > 窗口 > 输出
标签: c# wpf binding command viewmodel