【发布时间】:2013-12-26 19:59:49
【问题描述】:
我有一个包含网格的 WPF 应用程序。网格被分成 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>
【问题讨论】:
-
我希望用户能看到宽度
-
不可见时会影响其他列的大小吗?
-
我将可见性设置为折叠并尝试隐藏。然而,似乎什么都没有发生。第三列似乎仍然对其他两列的大小有影响