想要将click事件添加到datatemplate中的按钮。 有一些代码:
var temp = (DataTemplate)XamlReader.Load(
new MemoryStream(Encoding.Default.GetBytes(
@"<DataTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'><Button><TextBlock Text='1' TextAlignment='Center'/></Button></DataTemplate>"
)));
var button = temp.LoadContent() as Button;
button.Click += (sender, args) =>
{
MessageBox.Show("123");
};
return temp;
所以,当我点击按钮时,没有任何反应。 我错过了什么?
答案 0 :(得分:0)
看看this问题,它非常相似。为了得到你需要的东西你可以像这样使用Framework Element Factory:
private DataTemplate CreateTemplate()
{
FrameworkElementFactory fef = new FrameworkElementFactory(typeof(Button));//new FrameworkElementFactory("<Button Name='ButtonName'><TextBlock Text='1' TextAlignment='Center'/></Button>");
fef.AddHandler(Button.ClickEvent, new RoutedEventHandler(b_Click));
fef.SetValue(Button.ContentProperty, "1");
return new DataTemplate() { VisualTree = fef };
}
private void b_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("123");
}