WPF - 如何通过按下按钮来复制控件/整个网格?

我是WPF的新手,我试图制作一个控件,它会在每次打到特定控件时扩展我的表单,直到它达到最多7次。WPF - 如何通过按下按钮来复制控件/整个网格?

这是形式: https://i.imgur.com/50tzCSy.png

<Border Padding="10"> 

<StackPanel>

<TextBlock Text="Insert a file or expand to insert more file at once." Margin="0 10"/>

<!-- Add File -->

<Grid>

<Grid.ColumnDefinitions>

<ColumnDefinition Width="*" />

<ColumnDefinition Width="4*" />

<ColumnDefinition Width="*" />

</Grid.ColumnDefinitions>

<TextBlock Grid.Column="0" Text="File Name:" FontWeight="Bold" Margin="0 10" />

<TextBox Grid.Column="1" Height="20" Margin="10 0 0 0" />

<Button Grid.Column="2" Content="Test" Height="20" Width="50" />

</Grid>

<ItemsControl ItemsSource="{Binding AllChildren}" ItemTemplate="{StaticResource ChildTemplate}" />

<!-- Buttons -->

<Grid Margin="0 10">

<Grid.ColumnDefinitions>

<ColumnDefinition Width="*" />

<ColumnDefinition Width="*" />

<ColumnDefinition Width="*" />

</Grid.ColumnDefinitions>

<Button Grid.Column="0" Margin="0 0 10 0" Content="Save" />

<Button Grid.Column="1" Content="Expand" Grid.ColumnSpan="2" Margin="0.2,0,123.6,0.2" Click="Button_Click" />

<Button Grid.Column="2" Margin="10 0 0 0" Content="Cancel" />

</Grid>

</StackPanel>

</Border>

我尝试,直到它达到最高的7个重复复制的网格。

我该如何通过Button事件处理程序代码做到这一点?

回答:

这是我的评论的插图。我尽量保持ViewModel尽可能简单和通用,所以它应该看起来是空的。它由你来修改它,并最终把一些DataBinding(我会推荐它)。

让我们知道你是否需要更具体的东西。在XAML:

<Border Padding="10"> 

<StackPanel>

<TextBlock Text="Insert a file or expand to insert more file at once." Margin="0 10"/>

<ListBox Name="DynamicList" HorizontalContentAlignment="Stretch" >

<ListBox.Resources>

<DataTemplate DataType="{x:Type local:FileM}">

<Grid>

<Grid.ColumnDefinitions>

<ColumnDefinition Width="*" />

<ColumnDefinition Width="4*" />

<ColumnDefinition Width="*" />

</Grid.ColumnDefinitions>

<TextBlock Grid.Column="0" Text="File Name:" FontWeight="Bold" Margin="0 10" />

<TextBox Grid.Column="1" Height="20" Margin="10 0 0 0" />

<Button Grid.Column="2" Content="Test" Height="20" Width="50" />

</Grid>

</DataTemplate>

</ListBox.Resources>

</ListBox>

<!--Since I don'T have any information about it, I removed the ItemsControl part-->

<Grid Margin="0 10">

<Grid.ColumnDefinitions>

<ColumnDefinition Width="*" />

<ColumnDefinition Width="*" />

<ColumnDefinition Width="*" />

</Grid.ColumnDefinitions>

<Button Grid.Column="0" Margin="0 0 10 0" Content="Save" />

<Button Grid.Column="1" Content="Expand" Click="Button_Click" />

<Button Grid.Column="2" Margin="10 0 0 0" Content="Cancel" />

</Grid>

</StackPanel>

</Border>

而后面的代码:

public class FileM 

{

}

public partial class MainWindow : Window

{

public ObservableCollection<FileM> ListFiles = new ObservableCollection<FileM>();

public MainWindow()

{

InitializeComponent();

DynamicList.ItemsSource = ListFiles;

}

private void Button_Click(object sender, RoutedEventArgs e)

{

if(ListFiles.Count<7){ListFiles.Add(new FileM());}

}

}

以上是 WPF - 如何通过按下按钮来复制控件/整个网格? 的全部内容, 来源链接: utcz.com/qa/258514.html

回到顶部