WPF MVVM ListView:Change" SelectedItem"在ViewModel属性中

时间:2015-10-23 08:41:45

标签: validation binding listbox

所以,这是我在stackoverflow上的第一篇文章...在我能够解决研究中的每一个问题之前。

现在,我有一个简单的用例,我无法找到一个简单的解决方案。 (找到:Application.Current.Dispatcher.BeginInvoke / Interaction Trigger with command - 我不喜欢它)

我使用MVVM编写了一个应用程序:<ListView ItemsSource="{Binding StringList}" SelectedItem="{Binding SelectedString}">StringListObservableCollection<string>,其中&#34; a&#34;,&#34; b&#34;,&#34 ; C&#34)

我的问题:我喜欢将选择设置为&#34; b&#34;如果用户选择&#34; c&#34;。但是,在getter的RaisePropertyChanged("SelectedString");return "b"之后,Listview的选择仍然是&#34; c&#34; ...

public string SelectedString
{
   get 
   { 
      return _selectedString; 
   }
   set
   {
      if (value == "c")
         _selectedString = "b";
      else
         _selectedString = value;

      RaisePropertyChanged("SelectedString");
   }
}

有简单的解决方案吗?谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

好吧,你总是可以这么做:创建一个新的列表视图,将它绑定到布尔值的可见性,这取决于你必须改变选择的情况,就像你在你的& #34;如果&#34 ;.当发生这种情况时,隐藏第一个列表视图并显示第二个列表视图(不要忘记将第二个列表视图SelectedItem绑定到其他字符串)。