我使用以下代码在Grid
中在运行时添加控件:
void AddControl(UserControl oControl)
{
grid.Children.Add(oControl);
oControl.SetValue(Grid.RowProperty, 1);
oControl.SetValue(Grid.ColumnProperty, 0);
}
我想在同一位置删除控件(row = 1,column = 0)。我没有保留对先前添加的控件的引用。如何从Grid
获取和删除某个位置(row = 1和column = 0)的控件?
答案 0 :(得分:3)
我有两个用户控件,其中包含一些功能。在里面 主窗口我有两个按钮。点击第一个我正在设置 UserControl1在第二行和点击第二个我正在设置 UserControl2处于相同位置
为了实现这一目标,您需要的是TabControl
:
<TabControl>
<TabItem Header="Tab 1">
<Grid Background="Gray">
<TextBlock Text="Here goes UserControl 1"
VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
</TabItem>
<TabItem Header="Tab 2">
<Grid Background="Gray">
<TextBlock Text="Here goes UserControl 2"
VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
</TabItem>
</TabControl>
结果:
为什么在代码中添加控件并不好?
因为它会造成可维护性混乱。必须在XAML中定义UI元素。这就是XAML的用途。在后面的代码中创建UI元素不仅代码更多,而且容易出错,并且完全破坏了XAML支持的UI和代码的分离。
如果我需要动态创建用户界面怎么办?
然后您必须使用XAML中定义的DataTemplates
。 (可选)使用DataTriggers
根据Model / ViewModel中的某些属性修改UI元素的状态
WPF的“动态”理念与传统的UI框架完全不同。