C# WPF设置ColumnDefinition。样式中的宽度不';不行?
我正在尝试使用应用于我的C# WPF设置ColumnDefinition。样式中的宽度不';不行?,c#,wpf,xaml,C#,Wpf,Xaml,我正在尝试使用应用于我的列定义的样式将列定义的宽度从“自动”更改为“*”。在我的样式中是绑定到名为CheckMe的复选框的IsChecked属性的DataTrigger 示例代码: <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto"> <Colu
列定义的样式将列定义的宽度
从“自动”
更改为“*”
。在我的样式中
是绑定到名为CheckMe
的复选框的IsChecked
属性的DataTrigger
示例代码:
<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中设置了什么值,样式本身都会改变
属性的值将始终被的本地值覆盖
这些财产是由于
它似乎是有效的,这种行为是在某处记录下来的,还是只是普通的XAML/WPF知识?是的,这是有用的。现在就投票吧。解决了我的问题。