2016-11-04 77 views
1

如何複製WrapPanel?WPF複製包裝面板

我有窗口,裏面有一些控件的WrapPanel。我想將其複製到我的代碼中,以便在同一個窗口中有兩個或更多精確的面板,但控件的名稱不同。

這是我的XAML如何看起來像:

<Window x:Class="WpfApplication1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:WpfApplication1" 
    mc:Ignorable="d" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid> 
    <StackPanel x:Name="stackPanel" HorizontalAlignment="Left" Height="301" Margin="10,10,0,0" VerticalAlignment="Top" Width="498"> 
     <WrapPanel x:Name="Wrap1" Height="142" Margin="0,0,345.6,0" VerticalAlignment="Top" Width="152"> 
      <Button x:Name="wrap1_button" Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75"/> 
      <Button x:Name="wrap1_button1" Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75"/> 
      <Label x:Name="wrap1_label" Content="Label" HorizontalAlignment="Left" VerticalAlignment="Top" Width="74"/> 
     </WrapPanel> 
    </StackPanel> 
</Grid> 

我想再弄WrapPanel旁邊放第一位,名叫Wrap2裏面wrap2_button,wrap2_button1,wrap2_label控制。

我試着在StackPanel中插入它,做這樣的事情:

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

     WrapPanel Wrap2 = Wrap1; 
     stackPanel.Children.Add(Wrap2); 
    } 
} 

,但它不工作...

回答

3

總之,你必須創建另一個WrapPanel,將其添加到StackPanel ,並將孩子添加到第二個WrapPanel

現在,如果你的反應是從複製中退縮,那是一種很好的本能。對於UserControl這可能是一個很好的用例,這是一種捆綁標準WPF控件組以允許其重用的方法。

我的建議是建立一個新的UserControl這是一個WrapPanel與你有孩子,然後在窗口中添加的新UserControl 2個實例爲StackPanel

HereUserControl類的備註的鏈接,以及創建自定義控件的一些注意事項。

+0

謝謝,我會看看。 – Nollie