如何获取和删除网格中某个位置的控件

时间:2013-04-12 14:24:59

标签: c# .net wpf grid runtime

我使用以下代码在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)的控件?

1 个答案:

答案 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>

结果:

enter image description here

  

为什么在代码中添加控件并不好?

因为它会造成可维护性混乱。必须在XAML中定义UI元素。这就是XAML的用途。在后面的代码中创建UI元素不仅代码更多,而且容易出错,并且完全破坏了XAML支持的UI和代码的分离。

  

如果我需要动态创建用户界面怎么办?

然后您必须使用XAML中定义的DataTemplates。 (可选)使用DataTriggers根据Model / ViewModel中的某些属性修改UI元素的状态

WPF的“动态”理念与传统的UI框架完全不同。