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またはimage要素を検出できません。DataTemplateにバインドできないと思いますが、どうすればよいですか?どういうわけか同じことを別の方法で行うことはできますか?