我已经在这个圈子里绕了两天,我希望WPF大师能够看到我要出错的地方。控制内容控件的MVVM ListBox
我在代码中设置CurrentViewModel。我的ListBox的选定项目和我的ContentControl的内容正确绑定。但是,当通过UI更改列表框中的选定项目时,CurrentViewModel正在设置,但内容控件未被更新。
我正在使用数据模板来映射我的视图和视图模型。
<DataTemplate DataType="{x:Type ViewModel:MyViewModel}">
<View:MyView />
</DataTemplate>
我有一个ListBox绑定到可观察的ViewModel集合。选定项目绑定到当前视图模型。
<ListBox ItemsSource="{Binding MyViewModelCollection}" DisplayMemberPath="DisplayName" SelectedItem="{Binding CurrentViewModel, Mode=TwoWay}"/>
我也有也必然要在CurrentView示范内容控制
<ContentControl Content="{Binding CurrentViewModel, Mode=TwoWay}"/>
这是我所编辑的,他们都必然要
public MyViewModel CurrentViewModel
{
get
{
return _currentViewModel;
}
set
{
if (_currentViewModel== value) return;
_currentViewModel= value;
OnPropertyChanged("CurrentViewModel");
}
}
财产名称清晰并删除格式信息。
任何帮助极大的赞赏。
干杯,
丹尼尔
编辑:在链路How can I debug WPF bindings?来了。我在Content绑定上设置了一个断点,并且在第一次设置绑定时确实只会调用一次。
感谢您的建议,我将内容的绑定设置为单向。这就是它原来的样子,我认为我把它设置为两种方式来测试它是否有任何作用。 我尝试了绑定的替代方法,并保留相同的行为。初始绑定设置为确定,但更改列表框不会更新内容。 – Spruce 2009-12-15 00:47:42
我做了一个样子,看起来完全像你的文章,它似乎工作。你确定你的财产上的二传手正在射击吗?我想你可能还有其他事情正在进行。 试着用一个简单的字符串集合来做同样的事情。回到基础并检查你的假设。使用字符串集合将消除数据类型问题。这可能是你的数据模板不太正确。 – 2009-12-15 12:44:10
感谢您的帮助。我对样品做了同样的工作。回到我的主应用程序,问题是如何激活区域。仍然不确定为什么它会工作一次。再次感谢。 – Spruce 2009-12-16 00:05:33