如何在WPF中提高代码背后的按钮事件

时间:2017-08-08 09:45:45

标签: wpf xaml

我正在研究WPF应用程序,我想提高我在运行时为Button Earlier创建的Button的click事件。而我想按钮点击应该是动态的 例如:我有两个按钮,一个是City1,一个是State1,两个都有Click事件,我有另一个同名的City2和State2。我想要的是我想提出City1点击事件以及State1点击 这是我的代码:

Button getSpecificButton = XYZ.Common.ExtensionMethods.FindLogicalChildren<Button>(this).Where(btn1 => btn1.Content == Intrbt.Content).FirstOrDefault();
if (getSpecificButton != null && getSpecificButton.Content != null)
{
    //getSpecificButton.Name = getSpecificButton.Content.ToString();
    //getSpecificButton.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent));
}

我有这个扩展方法用于获取应用程序中的所有按钮这里我得到了例外。

public static IEnumerable<T> FindLogicalChildren<T>(DependencyObject depObj) where T : DependencyObject
    {
        if (depObj != null)
        {
            foreach (object rawChild in LogicalTreeHelper.GetChildren(depObj))
            {
                if (rawChild is DependencyObject)
                {
                    DependencyObject child = (DependencyObject)rawChild;
                    if (child is T)
                    {
                        yield return (T)child;
                    }

                    foreach (T childOfChild in FindLogicalChildren<T>(child))
                    {
                        yield return childOfChild;
                    }
                }
            }
        }
    }

但是这段代码没有工作请尝试解决这个问题。

1 个答案:

答案 0 :(得分:-1)

getSpecificButton.Click += btn_Click;

//separate method
private void btn_Click(object sender, RoutedEventArgs e)
{
    // ...
}

这会奏效。 但请使用Adomenyth评论的ICommand。