c# - 绑定(bind) ListView.SelectedItem 时出现问题

标签 c# wpf data-binding mvvm

在我的 WPF mvvm(light) 项目中,我遇到这样的问题:将 ListView.SelectedItem 绑定(bind)到我的 ModelView 后,我尝试从 ModelView 更改它。看起来没问题,但 View 没有发生任何事情:

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>

模型 View :

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 并将其绑定(bind)到相同的源。当我在一个 Listview 中更改 SelctedItem 时,它会显示在另一个 Listview 上,反之亦然。

我查看了很多类似的解决方案,但我不知道出了什么问题:(

最佳答案

首先,您还应该发布 ItemsSource(ItemsSource 属性)的绑定(bind)代码。

但主要问题是你没有在 setter 中调用 PropertyChanged

    public ObservableObject SelectedOne 
    {
        get { return _selectedOne; }
        set 
        {

            if(_selectedOne != value)
            _selectedOne = value;

            OnPropertyChanged("SelectedOne ");//<-- otherwise the view dont know that the SelectedItem changed
        }
    }

关于c# - 绑定(bind) ListView.SelectedItem 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11775947/

相关文章:

c# - NHibernate 嵌套类映射问题

c# - 允许对象移动的 WPF 容器

data-binding - 使用 ng-grid 进行双向数据绑定(bind)?

wpf 如何判断数据绑定(bind)何时完成?

wpf - 带有静态文本和绑定(bind)的标签

c# - 一个 Button 会自动添加一个带有名称的新 Button

c# - 是否可以在一个类中实现多个 IEnumerable<T> ?

c# - 如何找到旧密码让用户更改它

wpf - 使用 SelectedIndex 或导航键盘时,ComboBoxItem 到 ComboBox 的全宽?

c# - 如何选择此 XML 节点并提取其属性