Sit Rep 我有一个WPF应用程序。在(C#)代码隐藏的构造函数中,我附加了一个按钮事件处理程序。问题是,它没有附加!但是,如果我通过单击UI按钮附加它,那么按钮工作正常。当然,如果我在按钮的XAML中附加它也可以。
因此,看起来prob正在构造函数中附加处理程序。这个过程似乎还为时过早。
这就是我想要的,但没有附上:
public MainWindow()
{
InitializeComponent();
//...
//
// TEST RADIO BUTTONS
//
// THIS HANDLER DOESN'T ATTACH!
ui_Test.Click += (object sender, RoutedEventArgs e) =>
{
bool localOnly = Convert.ToBoolean(ui_rdoLocal.IsChecked);
bool onlineOnly = Convert.ToBoolean(ui_rdoOnline.IsChecked);
bool both = Convert.ToBoolean(ui_rdoBoth.IsChecked);
string message = "Local: {1}{0}Online: {2}{0}Both: {3}".Put(nl, localOnly, onlineOnly, both);
MessageBox.Show(message);
};
//...
}
这是第二个测试按钮的代码,通过单击按钮附加上面的代码。此处理程序在XAML中设置。处理程序然后工作,但我想在C#中附加处理程序,而不是XAML。
<Button Name="ui_Test2" Content="Attach Annonymous Handlers" Margin="30,10" Click="ui_Test2_Click"></Button>
方法:
/// <summary>
/// Attaches control handlers. Will they attach now? YES!!
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ui_Test2_Click(object sender, RoutedEventArgs e)
{
ui_Test.Click += (object sndr, RoutedEventArgs rea) =>
{
bool localOnly = Convert.ToBoolean(ui_rdoLocal.IsChecked);
bool onlineOnly = Convert.ToBoolean(ui_rdoOnline.IsChecked);
bool both = Convert.ToBoolean(ui_rdoBoth.IsChecked);
string message = "Local: {1}{0}Online: {2}{0}Both: {3}".Put(nl, localOnly, onlineOnly, both);
MessageBox.Show(message);
};
}
提前获取任何帮助!
格雷格
答案 0 :(得分:0)
尝试在调用InitializeComponent()之后附加处理程序;在构造函数中。