我正在尝试为我的列设置MinWidth
。
MinWidth
适用于Column
0但不适用Column
2。分割器只是拖动,我可以让列小于声明的MinWidth
MinWidth
似乎只有在Column Width
具有数字值而不是自动时才会生效....有没有办法让它与Auto
或{{1}一起使用} ??
有什么想法吗?
*
答案 0 :(得分:4)
我修复此问题的方法是为MaxWidth
0设置Column
。
SizeChanged
触发后,根据当前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