2016-11-04 14 views
1

Как скопировать WrapPanel?WPF копировальная оберточная панель

У меня есть окно, в котором у меня есть WrapPanel с некоторыми элементами управления внутри. Я хотел бы скопировать его внутри своего кода, чтобы у меня было 2 или более точных панели в одном окне, но с разными именами для элементов управления.

Это как мой 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 с детьми у вас есть, а затем добавить 2 экземпляра этой новой UserControl к StackPanel в окне.

Here является ссылкой на примечания к классу UserControl с некоторыми соображениями о создании собственных пользовательских элементов управления.

+0

Спасибо, я посмотрю. – Nollie

Смежные вопросы