1

次のようなボタンがあります。

 <Button Name="btnSave" Click="BtnSave_OnClick"  Margin="5,0,0,0" MinWidth="50" ToolTip="SAVE">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <Image Height="24" HorizontalAlignment="Center" Source="/MyProject;component/Images/diskette.png" Width="24" />
                        <TextBlock Grid.Row="1" HorizontalAlignment="Center" Text="SAVE" />
                    </Grid>
            </Button>

このボタンは FormA 内にあります。FormB を開くときに btnSave を FormB に複製したいのですが、Content = null ボタンを作成しただけです。

// On formA
FormB formB = new FormB();
formB.Loaded += (s, e1) =>
                {                       
                        formA.Children.Remove(btnSave);
                        formB.Children.Add(btnSave);
                };
formB.Show();

デバッグ時、btnSave.Content は常に = null です。コンテンツをスタイルに入れるなど、この問題を修正するために多くの方法を試みましたが、うまくいきませんでした。あなたは何か考えがありますか、それとも私は何か間違っていますか?ありがとう

4

1 に答える 1

2

オブジェクトを xaml として保存し、その xaml から新しいオブジェクトを作成します。クリックするとボタンが複製され、スタックパネルに追加される簡単な例を次に示します。

Xaml

<StackPanel x:Name="MainStackPanel">
    <Button Name="btnSave" Click="BtnSave_OnClick"  Margin="5,0,0,0" MinWidth="50" ToolTip="SAVE" >
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <Image Height="24" HorizontalAlignment="Center" Source="/MyProject;component/Images/diskette.png" Width="24" />
            <TextBlock Grid.Row="1" HorizontalAlignment="Center" Text="SAVE" />
        </Grid>
    </Button>
</StackPanel>

コードビハインド

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void BtnSave_OnClick(object sender, RoutedEventArgs e)
    {
        Button button = sender as Button;
        string xaml = XamlWriter.Save(button);
        object clonedButton = XamlReader.Parse(xaml);
        MainStackPanel.Children.Add(clonedButton as UIElement);

    }
}
于 2013-10-04T17:49:22.753 に答える