0

我正在Grid使用以下代码在运行时添加一个控件:

void AddControl(UserControl oControl)
{
    grid.Children.Add(oControl);
    oControl.SetValue(Grid.RowProperty, 1);
    oControl.SetValue(Grid.ColumnProperty, 0);
}

我想删除同一位置的控件(行 = 1,列 = 0)。我没有保留对之前添加的控件的引用。如何从Grid?

4

1 回答 1

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>

结果:

在此处输入图像描述

为什么在代码后面添加控件不好?

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

如果我需要动态创建 UI 怎么办?

然后你必须使用DataTemplatesXAML 中定义的。可选地DataTriggers用于根据 Model / ViewModel 中的某些属性修改 UI 元素的状态

WPF 的“动态”思想确实与传统的 UI 框架不同。

于 2013-04-12T15:45:28.307 回答