[英]WPF how to make Grid Reevaluate Max Widths on GridSplitter Column Resize?
所以我有一个带有一列定义的表格。 初始列宽属性是从应用程序的设置初始化的,该属性可以正常运行,然后我尝试为列设置最大大小,以使用户无法调整屏幕大小,从而无法正确显示内容。
用于计算最大宽度的多重绑定似乎正常工作。 但是,我的问题是,当网格拆分器更改实际宽度的值时,多重绑定不会重新计算MaxWidth的值。 我在转换器内部设置了一个断点,但是没有命中。
但是,我不知道怎么回事,因为根据GridSplitter的文档:
http://msdn.microsoft.com/en-us/library/system.windows.controls.gridsplitter%28v=vs.110%29.aspx
使用网格分割器调整大小应更改列定义的实际宽度。
如果真是这样,那么我希望多绑定会更新。 但是,我没有看到。
<Grid.ColumnDefinitions>
<ColumnDefinition
x:Name="NameListViewColumn"
MinWidth="100"
Width="{Binding NameListViewWidth, Source={x:Static DaedalusGraphViewer:SettingsManager.AppSettings}, Mode=OneTime,
Converter={StaticResource GridLengthConverter}}"
>
<ColumnDefinition.MaxWidth>
<MultiBinding Converter="{StaticResource SignalNameColumnMaxSizeConverter}">
<Binding Path="ActualWidth"
ElementName="NameListViewColumn"
/>
<Binding Path="ActualWidth"
ElementName="SignalValuesListViewColumn"
/>
<Binding Path="ActualWidth"
ElementName="SignalTreeViewColumn"
/>
<Binding ElementName="SignalValuesListViewColumn" Path="MinWidth" />
<Binding ElementName="SignalTreeViewColumn" Path="MinWidth" />
</MultiBinding>
</ColumnDefinition.MaxWidth>
</ColumnDefinition>
<ColumnDefinition Width="Auto" x:Name="SignalNamesGridSpitter"/>
<ColumnDefinition
MinWidth="100"
x:Name="SignalValuesListViewColumn"
Width="{Binding SignalValuesListViewWidth, Source={x:Static DaedalusGraphViewer:SettingsManager.AppSettings},
Mode=OneTime, Converter={StaticResource GridLengthConverter}}"
>
<ColumnDefinition.MaxWidth>
<MultiBinding Converter="{StaticResource SignalValuesMaxSizeConverter}">
<Binding Path="ActualWidth"
ElementName="SignalValuesListViewColumn"
/>
<Binding Path="ActualWidth"
ElementName="SignalTreeViewColumn"
/>
<Binding ElementName="SignalTreeViewColumn" Path="MinWidth" />
</MultiBinding>
</ColumnDefinition.MaxWidth>
</ColumnDefinition>
<ColumnDefinition x:Name="SignalValuesGridSplitter" Width="Auto"/>
<ColumnDefinition
x:Name="SignalTreeViewColumn"
MinWidth="100"
Width="*"
/>
<ColumnDefinition Width="18" MinWidth="18" x:Name="VerticalScrollBarColumn"/>
</Grid.ColumnDefinitions>
在这里找到答案:基本上,实际的width属性没有实现INotifyPropertyChanged。
MaxWidth =“ {Binding ElementName = SignalValuesGridSplitter,Path = ActualWidth}” TextWrapping =“ Wrap” />
希望能帮助到你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.