簡體   English   中英

WPF復制按鈕單擊不觸發

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM