我有一些像图片一样控制的页面。我想动态添加这些控件,当用户点击添加动态添加控件时。我怎么能实现这个?我想使用模板控件或类似的东西。
答案 0 :(得分:1)
为什么不采用“样本标签,波斯语翻译标签,文本框和添加语音按钮”并将它们放入用户控件中(让我们将其命名为 MyUserControl )
然后,不是直接在窗口的网格上添加该用户控件,而是添加一个堆栈面板(让我们将其命名为 MyStackPanel ),并将该用户控件添加到堆栈面板(堆栈面板必须将方向设置为垂直)现在,当用户点击“加号”按钮时,您的代码将是:
MyStackPanel.Children.Add(new MyUserControl() { Margin = new Thickness(0, 5, 0, 0) });
这将为您提供您要求的相同控件,保证金最高= 5。
您只需为用户控件编写一次代码,所有添加的控件(单击加号按钮后)将具有相同的代码。
修改强> 如果要在单击删除按钮时删除MyUserControl,请在主窗口上为StackPanel(MyStackPanel)添加以下代码(查找ButtonBase.Click):
<StackPanel Height="236" HorizontalAlignment="Left" ButtonBase.Click="stackPanel1_Click" Name="stackPanel1" VerticalAlignment="Top" Width="491">
以及StackPanel的事件:
private void stackPanel1_Click(object sender, RoutedEventArgs e)
{
if (((UserControl1)e.Source).Tag.ToString() == "1")
{
stackPanel1.Children.Remove(((UserControl1)e.Source));
}
else
{
MessageBox.Show("Another button was clicked");
}
}
现在,用户控件上的删除按钮必须具有以下代码行:
this.Tag = 1;
答案 1 :(得分:0)
根据我使用Implicit Data Templates
比其他任何事情都容易User Control
也是一个不错的选择,但Data Templates
或Implicit Data Templates
要好得多。