【发布时间】:2012-08-02 10:53:02
【问题描述】:
在我的WPF mvvm(light) 项目中,我遇到了这样的问题:在将ListView.SelectedItem 绑定到我的ModelView 之后,我试图将其从ModelView 更改。似乎没问题,但没有发生在视图:
XAML:
<ListView SelectedItem="{Binding SelectedOne}"
ItemsSource="{Binding Items}">
</ListView>
<ListView ScrollViewer.CanContentScroll="False"
ItemsSource="{Binding Items}"
ItemTemplateSelector="{StaticResource myDataTemplateSelector}"
HorizontalContentAlignment="Stretch"
SelectedItem="{Binding SelectedOne, Mode=TwoWay}"
IsSynchronizedWithCurrentItem="True">
</ListView>
模型视图:
ObservableCollection<ItemViewModel> _EAItems = new ObservableCollection<ItemViewModel>();
public ObservableObject _selectedOne;
public ObservableCollection<ItemViewModel> Items
{
get
{
return _EAItems;
}
set
{
_EAItems = value;
}
}
public ObservableObject SelectedOne
{
get { return _selectedOne; }
set
{
if(_selectedOne != value)
_selectedOne = value;
}
}
Select = new RelayCommand(() =>
{
if (qw == 15) { qw = 0; }else
SelectedOne = Items[qw];
qw++;
});
项目是ObservableCollection。
我添加了另一个 Listview 并将其绑定到相同的源。当我在 Listview 之一中更改 SelctedItem 时,它会显示在另一个 SelctedItem 上,反之亦然。
我查看了很多类似的解决方案,但我不知道出了什么问题:(
【问题讨论】:
-
我找不到参考,但我相信当属性更改的源是 UI 时,会隐含属性更改事件 - 这就是为什么带有 2 个 ListViews 的示例正在工作的原因跨度>
-
非常感谢大家,成功了
标签: c# wpf data-binding mvvm