gpt4 book ai didi

c# - WPF DataTrigger 显示和隐藏网格列 XAML

转载 作者:可可西里 更新时间:2023-11-01 08:36:29 30 4
gpt4 key购买 nike

我有一个包含网格的 WPF 应用程序。网格被分成 3 列,第三个网格在加载时宽度为零。

我在其他两列中有两个数据网格。当其中一个数据网格中的所选项目更改时,另一个数据网格更改它显示的值,即主从模板。这一切都很好。

数据网格中有一个值,如果选中,我希望第 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 中设置。否则,ColumnDefinition 元素上的 Width 将覆盖从 DataTrigger 设置的值。

关于c# - WPF DataTrigger 显示和隐藏网格列 XAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20475212/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com