在xaml中动态添加网格列

时间:2009-11-25 12:34:36

标签: wpf triggers grid

有什么方法可以在xaml中动态添加网格列(例如使用trigger / datatrigger)? 这种情况是我想添加/删除网格列,具体取决于绑定到该网格的Visibility属性。

1 个答案:

答案 0 :(得分:1)

可能不是您问题的确切解决方案,但您可以尝试这样的事情。

<Grid Name="theGrid">
   <Grid.ColumnDefinitions>
       <ColumnDefinition Name="columnToHide" />
       <ColumnDefinition />
   </Grid.ColumnDefinitions>
   <StackPanel Name="stackToHide" Grid.Column="0">
        <Button>hello</Button>
   </StackPanel>
   <Button Grid.Column="1" Click="Button_Click">Bye</Button>
</Grid>
bool visible = true;
GridLength width;
GridLength height;
private void Button_Click(object sender, RoutedEventArgs e)
{

    if (visible)
    {
        GridLength zero = new GridLength(0);
        width = columnToHide.Width;    //save original height and width
        columnToHide.Width = zero; //make column invisible
        visible = false;
    }
    else
    {
        columnToHide.Width = width; //restore original width
        visible = true;
    }
}

您还可以尝试将列内容放在容器中并更改其上的Visibility属性,尽管这不会导致网格内容的任何大小调整,并且您将留下以前用于该列的空间。