【问题标题】:programatically set width of a column within a grid以编程方式设置网格内列的宽度
【发布时间】:2011-04-13 21:36:38
【问题描述】:

是否可以在 Silverlight 中为 Grid 设置列的宽度?我有一个包含两列的网格(不是网格视图)。 A 列和 B 列。我想要完成的是当用户单击 ColumnA 中的按钮时,ColumnA 的宽度设置为 0.01。然后 ColumnB 应该扩展网格的整个宽度以填充剩余区域。类似于固定或取消固定停靠面板的方式?

这是最好的方法还是我应该回到停靠面板并让 SL 处理它?与使用 RAD 控件相比,我更愿意自己管理它,因为我认为对于这样一个看似简单的小任务来说它有点臃肿。

我的另一个想法是使用 gridsplitter,但我不确定如何使用 gridsplitter 以编程方式折叠或展开列?因此我现在的困境。任何建议将不胜感激。

提前致谢

【问题讨论】:

  • 请分享您的仅 xaml 网格区域

标签: c# silverlight gridsplitter


【解决方案1】:

通过 Name 属性为您的 ColumnDefinition 命名,例如:

<ColumnDefinition Width="100" Name="FooColumn"/>

然后您可以随时在代码中为其分配一个新的宽度:

FooColumn.Width = new GridLength(1);

(编辑:应该在两个地方都使用相同的名称......哎呀......不过你明白了)

【讨论】:

    【解决方案2】:
    Try this
    
    <Grid x:Name="LayoutRoot" Background="White" ShowGridLines="True">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="100"/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>       
            <sdk:GridSplitter  />    
        </Grid>
    
     LayoutRoot.ColumnDefinitions.First().Width = new GridLength();
    

    【讨论】:

    • 感谢您的建议。使用 .First 时,它似乎覆盖了两列,我“松散”了第二列中的内容?
    猜你喜欢
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多