Avalonia中的SelectionChanged
很不幸地被破坏了,并且多年没有修复。例如:
private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
var vm = (MainWindowViewModel)DataContext;
Debug.WriteLine($"{vm.SelectedValue}");
}
这将打印先前选择的值,而不是此时,因为OnSelectionChanged
在选择更改之前触发,而不是在更改期间或之后触发。这实际上意味着它没有任何作用,因为如果你想在某个值更改时更改应用程序的状态,你不能这样做,因为它不知道当前值。
是否有可能以某种方式覆盖它或实现您自己的实际有效的解决方案?
1条答案
按热度按时间w8f9ii691#
正如评论中提到的,在视图模型中处理逻辑比在代码隐藏中处理逻辑更好,但是要回答如何用另一种方式实现它的问题,您可以在视图模型中创建并引发一个事件:
然后,在视图中,您必须订阅此事件,但仅当
DataContext
已设置时:如果愿意,还可以将参数放入
SelectedValueChangedEvent
委托。