【问题标题】:RoutedEvents Combobox not FiringRoutedEvents 组合框未触发
【发布时间】:2021-02-19 00:07:45
【问题描述】:

您好,请好心人帮忙。我有两个用户控件。一个带有文本框,另一个带有组合框。修改组合和文本框后,主窗口将执行计算例程。 文本框版本有效,组合框无效。我能看到的唯一区别是 文本框使用 TextChangedEventArgs 然而 组合框使用 System.EventArgs

有什么想法吗? 谢谢

// UserControl - with TextBox

public event RoutedEventHandler ucTextChanged;

        private void OnTextChanged(object sender, RoutedEventArgs e)
        {
            if (ucTextChanged != null)
            {
                ucTextChanged(this, new RoutedEventArgs());
            }
        }

       private void txtValue_TextChanged(object sender, TextChangedEventArgs e)
        {
            OnTextChanged(sender, e);
        }

// UserControl - ComboBox

      public event RoutedEventHandler ucComboChanged;


        private void OnComboChanged(object sender, RoutedEventArgs e)
        {
            if (ucComboChanged != null)
            {
                ucComboChanged(this, new RoutedEventArgs());
            }
        }

      private void ucCombo_DropDownClosed(object sender, System.EventArgs e)
        {
        OnComboChanged(sender, e);      
        }

【问题讨论】:

    标签: c# wpf routed-events


    【解决方案1】:

    尝试查看 ComboBox 的事件 SelectionChanged (https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.combobox.onselectionchanged)

    XAML:

    <ComboBox SelectionChanged="ucCombo_SelectionChanged"></ComboBox>
    

    C#:

        private void ucCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            // your code here...
            OnComboChanged(sender, e);
        }
    

    【讨论】:

    • 组合在 UserControl 中,因此需要从(许多)用户控件到主窗体之间建立某种连接。我似乎有一些工作,在 UserControl 和 Main 窗体上添加这些。 ucCombo.AddHandler(ComboBox.KeyUpEvent, new RoutedEventHandler(ComboHandler)); ucCombo.AddHandler(ComboBox.SelectionChangedEvent, new RoutedEventHandler(ComboHandler));
    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 2015-09-18
    • 2013-03-01
    • 1970-01-01
    相关资源
    最近更新 更多