[英]WPF Copied Button Click not firing
我對c#wpf很新,有問題。
我已經使用這篇文章中的答案來復制Grid控件。 網格控件包含一個按鈕。 看起來它正在被正確復制。
按下原始控件的按鈕時,將處理click事件,該事件調用窗口代碼中的方法。
按下控件按鈕的副本時,不會觸發單擊事件,也不會調用該方法。 這讓我感到困惑,因為我希望它能夠調用相同的方法。
也許事件處理數據沒有被正確復制? 有沒有解決的辦法?
原始網格和復制網格(包含按鈕)都是另一個網格的子節點。
編輯:
這是包含按鈕的原始網格的xaml:
<Grid Name="TempTab" DockPanel.Dock="Left" HorizontalAlignment="Left" Margin="5,5,5,0">
<Rectangle Fill="Black" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Stroke ="White" Margin="0,0,-2,0">
</Rectangle>
<Grid>
<DockPanel LastChildFill="False">
<TextBlock Foreground="White" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="3,0,3,3">Some Text</TextBlock>
<Button Width="50" BorderBrush="{x:Null}" Foreground="{x:Null}" BorderThickness="0" Margin="3,0,0,0" Click="tabdowntest">
<Button.Background>
<ImageBrush ImageSource="TopMenuBar_Close.png" Stretch="Uniform"/>
</Button.Background>
</Button>
</DockPanel>
</Grid>
</Grid>
此網格是DockPanel的子項,名稱為“TabsDock”。 使用以下代碼復制它:
string gridXaml = XamlWriter.Save(TempTab);
StringReader stringReader = new StringReader(gridXaml);
XmlReader xmlReader = XmlReader.Create(stringReader);
Grid newTab = (Grid)XamlReader.Load(xmlReader);
TabsDock.Children.Add(newTab);
這是“Click”事件處理程序的代碼,當按下原始按鈕或復制按鈕時,應該調用該代碼。 但它僅用於原始:
private void tabdowntest(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("Button Pressed");
}
沒有設置bindigs,你需要設置它們(在orig帖子中注釋):
需要明確的是,這只是解決方案的一半(因為它在08年回顧)。 這將導致評估綁定並將結果序列化。 如果你想保留綁定(如問題所示)你必須在運行時將ExpressionConverter添加到Binding類型(請參閱我的問題的第二部分以獲取相關鏈接)或者在下面看看我自己的答案,了解如何在4.0中執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.