1

想要在数据模板中的按钮上添加点击事件。有一些代码:

 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;

所以,当我点击按钮时,什么也没有发生。我错过了什么?

4

1 回答 1

0

看看这个问题,很相似。要获得您需要的东西,您可以像这样使用框架元素工厂:

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");
    }
于 2012-08-07T11:08:55.813 回答