Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF设置ColumnDefinition。样式中的宽度不';不行?_C#_Wpf_Xaml - Fatal编程技术网

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知识?是的,这是有用的。现在就投票吧。解决了我的问题。