网格分割器和MinWidth

时间:2010-11-08 16:27:34

标签: c# silverlight xaml

我正在尝试为我的列设置MinWidth

MinWidth适用于Column 0但不适用Column 2。分割器只是拖动,我可以让列小于声明的MinWidth MinWidth似乎只有在Column Width具有数字值而不是自动时才会生效....有没有办法让它与Auto或{{1}一起使用} ??

有什么想法吗?

*

2 个答案:

答案 0 :(得分:4)

我修复此问题的方法是为MaxWidth 0设置ColumnSizeChanged触发后,根据当前MaxWidth

获取Column 0的ActualWidth

所以我也从MinWidth 2中移除了Column。这是修改:

<!-- Content Area -->
<Grid x:Name="ContentGrid"
      Grid.Row="2">
    <Grid.ColumnDefinitions>
        <ColumnDefinition MinWidth="32" Width="260"/>
        <ColumnDefinition Width="8" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

...

然后是事件设置MaxWidth

this.SizeChanged += (s, e) =>
{
    double maxWidth = this.ActualWidth / 2.0;
    this.ContentGrid.ColumnDefinitions[0].MaxWidth = maxWidth;
}

答案 1 :(得分:0)

有一种熟悉的情况,例如

<Grid.ColumnDefinitions>
  <ColumnDefinitions Width="Auto"/>
  <ColumnDefinitions Width="12"/>
  <ColumnDefinitions Width="*"/>
</Grid.ColumnDefinitions>

中间有分路器,

<GridSplitter Grid.Column="1" VerticalAlignment="Stretch"/>

我的目标:

  

第1列中的自动宽度可防止拆分器进入&#39; trespassing&#39;在它上面。因此,我想设置分割器的限制,以防止它在边界上推动第3列(加权宽度 - *)。

使用IValueConverter返回Mainwindow的半宽作为边界,

return (double)value/2;

尝试过(不工作),

<SomeContent Grid.Column="2"
    MinWidth="{Binding
               RelativeSource={RelativeSource AncestorType=Window},
               Path=ActualWidth,
               Converter={StaticResource minWidthConverter}}"/>  

也试过(也没用),

<AnotherContent Grid.Column="0"
    MaxWidth="{Binding
               RelativeSource={RelativeSource AncestorType=Window},
               Path=ActualWidth,
               Converter={StaticResource minWidthConverter}}"/>  

最后(&amp; 工作),

<GridSplitter Grid.Column="1" VerticalAlignment="Stretch"
    MaxWidth="{Binding
               RelativeSource={RelativeSource AncestorType=Window},
               Path=ActualWidth,
               Converter={StaticResource minWidthConverter}}"/>

谁会想到设置分离器本身= D