Dot-Net

是否可以在 Grid RowDefinitions 上使用觸發器?

  • October 17, 2016

我有一個網格,其行需要根據視圖模型動態調整大小。我想做類似以下的事情:

<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>

這可以編譯,不會引發任何錯誤,但似乎沒有任何效果。是否有我遺漏的東西,或者網格在繪製表單後不允許其行調整大小或類似的東西?

我認為您的 Xaml 程式碼的唯一問題是您通過在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>

引用自:https://stackoverflow.com/questions/5105419