代码之家  ›  专栏  ›  技术社区  ›  Frosty840

如何创建ListView的SelectedItem属性的双向链接?

  •  3
  • Frosty840  · 技术社区  · 14 年前

    我最近接手了一个MVVM项目,这个项目是由一个现在离开公司的人发起的;这是我第一次使用WPF,但从表面上看,这是他第一次同时使用WPF和OOP…

    无论如何,我在XAML中有一个ListView,并且我有一个集合类,它当前不包含“SelectedItem”属性。

    有人能告诉我需要输入什么代码来将ListView的SelectedItem链接到我的集合的尚未写入的SelectedItem属性,然后需要输入什么代码,以便集合的SelectedItem链接回ListView吗?

    为家庭作业级别的问题道歉,但我正在使用的代码是如此的恶梦,以至于我还不能把我的头绕在“如何编写WPF”上呢?同时,“我该如何将这个恐怖的编码改写为OOP?”所以如果有人能给我提供一些示例代码,我就可以把它插入噩梦中…

    2 回复  |  直到 14 年前
        1
  •  6
  •   Eilistraee    14 年前

    <ListView SelectedItem="{Binding SelectedItem, Mode=TwoWay}" ItemsSource="{Binding MyObjects}"/>
    

    public class MyViewModel: INotifyPropertyChanged
    {
      private MyObj selectedItem;
      public MyObj SelectedItem
      {
        get{return this.selectedItem;}
        set
        {
          if(value!=selectedItem)
          {
            selectedItem = value;
            RaisePropertyChanged("SelectedItem");
          }
    
        [... your collection....]
        public event PropertyChangedEventHandler PropertyChanged;
        public void RaisePropertyChanged(string propertyName)
        {
          var propertyChanged = this.PropertyChanged;
          if(propertyChanged!=null) 
            propertyChanged(new PropertyChangedEventArgs(propertyName));
        }
    
        2
  •  0
  •   rerun    14 年前

    dim s as List( of MyObj) 
    ctype(ListVeiw1.SelectedItem,MyObj).MyProp