所以,这是我在stackoverflow上的第一篇文章...在我能够解决研究中的每一个问题之前。
现在,我有一个简单的用例,我无法找到一个简单的解决方案。 (找到:Application.Current.Dispatcher.BeginInvoke / Interaction Trigger with command - 我不喜欢它)
我使用MVVM编写了一个应用程序:<ListView ItemsSource="{Binding StringList}" SelectedItem="{Binding SelectedString}">
(StringList
是ObservableCollection<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");
}
}
有简单的解决方案吗?谢谢你的帮助!
答案 0 :(得分:0)
好吧,你总是可以这么做:创建一个新的列表视图,将它绑定到布尔值的可见性,这取决于你必须改变选择的情况,就像你在你的& #34;如果&#34 ;.当发生这种情况时,隐藏第一个列表视图并显示第二个列表视图(不要忘记将第二个列表视图SelectedItem绑定到其他字符串)。