gpt4 book ai didi

wpf窗口事件在窗口关闭后继续引发

转载 作者:行者123 更新时间:2023-12-02 00:10:32 25 4
gpt4 key购买 nike

我对 wpf 事件有疑问。在 xaml 中,我有以下带有 selectionchanged 事件的组合框:

<ComboBox Grid.Column="1" Grid.Row="1" Name ="comboBox"
SelectedItem="{Binding CurrentEventBinding.ControlId, ValidatesOnDataErrors=True}"
ItemsSource="{Binding ControlsNames}" SelectionChanged="ComboboxSelectionChanged">

在代码隐藏中,我有以下代码:

private void ComboboxSelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) {
(DataContext as EventBindingEditViewModel).VmCommands.UpdateSourceCommand.Execute(null);
}

我有以下工作场景:窗口.ShowDialog(); -> ComboboxSelectedChanged(引发事件)-> CloseWindow();然后再次:Window.ShowDialog(); -> ComboboxSelectedChanged(事件被触发两次)如果我在即时窗口中写入 sender.GetHashCode(),它会第一次返回当前窗口中组合框的哈希码,第二次返回“死”窗口的哈希码。因此,随着窗口的显示,事件被引发了很多次。看起来旧的组合框没有被处理或类似的东西。希望你能理解我的问题。提前致谢!

最佳答案

原因是您正在使用绑定(bind),并且在窗口关闭后它仍然有效。然后您在一个窗口中更改所选项目,它通过绑定(bind)更改另一个窗口(已关闭)中的所选项目。要解决此问题,您应该在关闭的窗口中设置 DataContext = null。或者你可以每次都使用同一个窗口,只是不关闭它,而是隐藏它。

关于wpf窗口事件在窗口关闭后继续引发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15700538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com