Xaml 在坞面板中设置触发器

Xaml 在坞面板中设置触发器,xaml,Xaml,我有一个停靠面板,我想根据属性值设置其高度 以下代码已编译,但未执行: <DockPanel Grid.Row="1" Visibility="{Binding Path=IsValid}" Margin="8,4"> <DockPanel.Triggers> <Trigger Property="FrameworkElement.Visibility" Value="Visible"&

我有一个停靠面板,我想根据属性值设置其高度

以下代码已编译,但未执行:

<DockPanel Grid.Row="1"
            Visibility="{Binding Path=IsValid}" Margin="8,4">
            <DockPanel.Triggers>
                <Trigger Property="FrameworkElement.Visibility" Value="Visible">
                    <Setter Property="FrameworkElement.Height" Value="150"/>
                </Trigger>
                <Trigger Property="FrameworkElement.Visibility" Value="Hidden">
                    <Setter Property="FrameworkElement.Height" Value="0"/>
                </Trigger>
            </DockPanel.Triggers>
            <ListBox Height="150"/>
        </DockPanel>

我做错了什么?任何帮助,非常感谢

谢谢

乔来自:

请注意,在元素上建立的触发器集合仅支持EventTrigger,而不支持属性触发器(Trigger)。如果需要属性触发器,则必须将其放置在样式或模板中,然后直接通过样式属性或通过隐式样式引用间接将该样式或模板指定给元素

因此,要使其工作,您需要一个样式或模板。我认为您不希望改变DockPanel的外观,因此它是:

<DockPanel Grid.Row="1" Visibility="{Binding Path=IsValid}" Margin="8,4">
    <DockPanel.Style>
       <Style>
           <Style.Triggers>
               <Trigger Property="FrameworkElement.Visibility" Value="Visible">
                   <Setter Property="FrameworkElement.Height" Value="150"/>
               </Trigger>
               <Trigger Property="FrameworkElement.Visibility" Value="Hidden">
                   <Setter Property="FrameworkElement.Height" Value="0"/>
               </Trigger>
           </Style.Triggers>
       </Style>
    </DockPanel.Style>

    <ListBox Height="150"/>
</DockPanel>

来自:

请注意,在元素上建立的触发器集合仅支持EventTrigger,而不支持属性触发器(Trigger)。如果需要属性触发器,则必须将其放置在样式或模板中,然后直接通过样式属性或通过隐式样式引用间接将该样式或模板指定给元素

因此,要使其工作,您需要一个样式或模板。我认为您不希望改变DockPanel的外观,因此它是:

<DockPanel Grid.Row="1" Visibility="{Binding Path=IsValid}" Margin="8,4">
    <DockPanel.Style>
       <Style>
           <Style.Triggers>
               <Trigger Property="FrameworkElement.Visibility" Value="Visible">
                   <Setter Property="FrameworkElement.Height" Value="150"/>
               </Trigger>
               <Trigger Property="FrameworkElement.Visibility" Value="Hidden">
                   <Setter Property="FrameworkElement.Height" Value="0"/>
               </Trigger>
           </Style.Triggers>
       </Style>
    </DockPanel.Style>

    <ListBox Height="150"/>
</DockPanel>