【问题标题】:MenuItem Click event only fired once when modifying it's own ItemsSourceMenuItem Click 事件仅在修改它自己的 ItemsSource 时触发一次
【发布时间】:2021-07-23 10:21:59
【问题描述】:

如果您将项目添加到 ItemsSource,我试图了解为什么 MenuItem 上的 Click 事件只触发一次

但是如果您通过另一个控件(即按钮)添加项目,那么 Click 事件会继续触发吗?

    <StackPanel>
        <Menu HorizontalAlignment="Left" Height="100" Width="100">
            <MenuItem Header="MenuItem" Click="MenuItem_Click" ItemsSource="{Binding MyItems}" Height="100" Width="100">
            </MenuItem>
        </Menu>
    </StackPanel>
public partial class MainWindow : Window
{
        public MainWindow()
        {
            InitializeComponent();
            DataContext = new MyViewModel();
        }

        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            ((MyViewModel)DataContext).AddNewItem(null);
        }
}
public class MyViewModel
{
        public ObservableCollection<string> MyItems { get; set; } = new ObservableCollection<string>();

        public MyViewModel() { }

        public void AddNewItem(object x)
        {
            MyItems.Add(Guid.NewGuid().ToString());
        }
}

【问题讨论】:

    标签: wpf binding command menuitem


    【解决方案1】:

    当有子项要显示时,捕获MenuItemClick 事件。

    如果您单击添加的没有子级的MenuItem,您的事件处理程序将再次被调用。

    您可以处理另一个事件,例如 PreviewMouseLeftButtonDown 来克服这个“问题”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      相关资源
      最近更新 更多