[英]WPF DataTrigger to display and hide grid column XAML
我有一個包含網格的WPF應用程序。 網格被分成3列,第3個網格在加載時具有零寬度。
我在另外兩列中有兩個數據網格。 當其中一個datagrid中的所選項更改時,其他datagrid會更改其顯示值,即主詳細信息模板。 一切正常。
數據網格中有一個值,如果選中,我希望第3列將其寬度從零更改為2 *。 我不知道怎么做?
我希望通過XAML實現這一目標。 我一直在關注數據觸發器和值轉換器。 我在下面快速編寫了一些代碼進行測試。 我已經讀過將列設置為width = 0,依賴項屬性設置優先級列表中可能更高。 無論如何要做到這一點還是我需要使用代碼?
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0"/>
</Grid.ColumnDefinitions>
<DataGrid Grid.Column="0"
ItemsSource="{Binding OrderList}"
SelectedItem="{Binding OrderSelected}"
AutoGenerateColumns="True">
</DataGrid>
<TextBox Grid.Column="1" Text="{Binding OrderSelected.Name}">
</TextBox>
<Grid x:Name="columnHideSeek" Grid.Column="2" Background="Blue">
<Grid.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding OrderSelected.Name}" Value="Mark">
<Setter Property="Grid.Width" Value="10"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
</Grid>
</Grid>
使用正確的DataTrigger
,這是完全可能的。 首先,將Trigger
添加到要更改的UI元素... ColumnDefinition
,而不是Grid
:
<ColumnDefinition>
<ColumnDefinition.Style>
<Style TargetType="{x:Type ColumnDefinition}">
<Setter Property="Width" Value="10" />
<Style.Triggers>
<DataTrigger Binding="{Binding OrderSelected.Name}" Value="Mark">
<Setter Property="Width" Value="2*" />
</DataTrigger>
</Style.Triggers>
</Style>
</ColumnDefinition.Style>
</ColumnDefinition>
接下來,不要在ColumnDefinition
元素上設置Width
,而是在Style
設置Width
。 否則, Width
上ColumnDefinition
元素將覆蓋從設置的值DataTrigger
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.