.net
  • wpf
  • xaml
  • 2012-08-07 59 views 1 likes 
    1

    想要將click事件添加到數據模板中的按鈕。 有一些代碼:DataTemplate中的XamlReader動態事件

    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

    看看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"); 
        } 
    
    相關問題