样式中的WPF设置ColumnDefinition.Width不起作用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了样式中的WPF设置ColumnDefinition.Width不起作用?相关的知识,希望对你有一定的参考价值。
我试图将Width
的ColumnDefinition
从"Auto"
更改为"*"
,使用Style
应用于我的ColumnDefinition
。在我的Style
是一个DataTrigger
绑定到IsChecked
称为CheckBox
的CheckMe
属性。
示例代码:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto">
<ColumnDefinition.Style>
<Style TargetType="ColumnDefinition">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=CheckMe,Path=IsChecked}" Value="True">
<Setter Property="Width" Value="*" />
<Setter Property="MinWidth" Value="300" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=CheckMe,Path=IsChecked}" Value="False">
<Setter Property="Width" Value="Auto" />
<Setter Property="MinWidth" Value="50" />
</DataTrigger>
</Style.Triggers>
</Style>
</ColumnDefinition.Style>
</ColumnDefinition>
</Grid.ColumnDefinitions>
<Border Background="Green">
<CheckBox x:Name="CheckMe" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TextBlock Text="Use * width" />
</CheckBox>
</Border>
<StackPanel Grid.Column="1">
<TextBlock Text="Second column" />
</StackPanel>
</Grid>
在我的示例代码中,我还设置了MinWidth
属性,该属性确实有效。
这可能吗?也许使用自定义AttachedProperty
代替?
答案
尝试删除显式宽度声明
<ColumnDefinition Width="Auto">
并将其设置为风格
<ColumnDefinition>
<ColumnDefinition.Style>
<Style TargetType="ColumnDefinition">
<Setter Property="ColumnDefinition.Width" Value="Auto"/>
如果要根据某些条件使用触发器切换某些属性值,则需要在样式本身中设置这些属性的默认值,否则无论您在setter中设置什么值,属性值都将始终被本地值覆盖由于dependency property value precedence的那些属性。
以上是关于样式中的WPF设置ColumnDefinition.Width不起作用?的主要内容,如果未能解决你的问题,请参考以下文章