2013-10-04 27 views
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> 

此按鈕裏面走形式,打開FormB當我想克隆btnSave到FormB但它只是創造了一個內容= NULL按鈕。

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

調試時,btnSave.Content always = null。 我嘗試了很多方法來解決這個問題,就像將內容放入樣式中一樣......但沒有運氣。 你有什麼想法或者我做錯了什麼? 謝謝

回答

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); 

    } 
} 
+0

謝謝,它就像魅力:) –