是否可以在Grid RowDefinitions上使用Triggers?

GWL*_*osa 13 .net wpf grid xaml datatrigger

我有一个网格,其行需要根据视图模型动态调整大小.我想做类似以下的事情:

<RowDefinition Height="2*">
    <RowDefinition.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=ShowSection}" Value="True">
                    <Setter Property="RowDefinition.Height" Value="2*"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=ShowSection}" Value="False">
                    <Setter Property="RowDefinition.Height" Value="0"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </RowDefinition.Style>
</RowDefinition>
Run Code Online (Sandbox Code Playgroud)

这个编译,没有错误,但似乎没有任何影响.有没有我缺少的东西,或者Grid在绘制表单后不允许其行调整大小或者是什么?

Fre*_*lad 18

我认为你的Xaml代码的唯一问题是你通过明确地设置Height来覆盖DataTrigger RowDefinition.尝试使用Setter代替

<RowDefinition>
    <RowDefinition.Style>
        <Style>
            <Setter Property="RowDefinition.Height" Value="2*"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=ShowSection}" Value="True">
                    <Setter Property="RowDefinition.Height" Value="2*"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=ShowSection}" Value="False">
                    <Setter Property="RowDefinition.Height" Value="0"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </RowDefinition.Style>
</RowDefinition>
Run Code Online (Sandbox Code Playgroud)


Nik*_*van 5

我知道这篇文章已有3年历史,但它仍然可以帮助某些人.

<RowDefinition>
    <RowDefinition.Style>
        <Style TargetType="RowDefinition">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=ShowSection}" Value="True">
                    <Setter Property="Height" Value="2*"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=ShowSection}" Value="False">
                    <Setter Property="Height" Value="0"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </RowDefinition.Style>
</RowDefinition>
Run Code Online (Sandbox Code Playgroud)

我处于相同的情况,我设法通过将TargetType设置为RowDefinition来使其工作.