如果 DataGrids 孩子通过转换器,我需要将我的 DataGrid 的 RowStyle 属性绑定到 Visibility。问题是孩子存在于 DataTemplate 中。我下面的代码是我现在正在做的简化版本,所以它可能没有多大意义。但不管怎么说:
<DataGrid Name="dataGrid"
ItemsSource="{Binding Path=ListOfData}"
RowStyle="{StaticResource DataGridRowStyle}"
>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Name="textBlock" Source={Binding Path=Title}
<Image Name="image" Source="{Binding Path=Image}"/>
</StackPanel>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
问题是,TextBlock 和 Image 可以单独折叠。如果两者都折叠,我需要 DataGridRow 折叠或隐藏,这样你就不会在网格中看到它。我的计划是定义一个名为“DataGridRowStyle”的 RowStyle。该样式将由 TextBlock 和 Images 的 Visibility 属性触发,并将 RowStyle 的 Visibility 设置为折叠。
<Style TargetType="{x:Type DataGridRow}" x:Key="DataGridRowStyle">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Value="True">
<Condition.Binding>
<MultiBinding Converter="{StaticResource VisibilityConverter}">
<Binding ElementName="textBlock" Path="Visibility" />
<Binding ElementName="image" Path="Visibility" />
</MultiBinding>
</Condition.Binding>
</Condition>
</MultiDataTrigger.Conditions>
<Setter Property="Visibility" Value="Collapsed"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
不幸的是,我在运行时收到警告,其中 System.Data 无法找到我的 textBlock 或图像元素。我猜你不能绑定到 DataTemplate 或者我做错了什么?我能以某种不同的方式做同样的事情吗?