GroupBoxを折りたたむときに問題が発生しました。私はそれが子供のすべてが倒れている場合、崩壊するGroupBoxが欲しいです。GroupBoxの可視性を子供の可視性にバインドできますか?
私は、以下に示すように、プロパティにマルチバインドを使用してこれを達成することができました。
<StackPanel>
<GroupBox>
<GroupBox.Visibility>
<MultiBinding
Converter="{StaticResource multiBoolOrToVis}"
ConverterParameter="{x:Static Visibility.Collapsed}"
>
<Binding Path="a_visible"/>
<Binding Path="b_visible"/>
</MultiBinding>
</GroupBox.Visibility>
<GroupBox.Header>
<Label Content="GroupBox"/>
</GroupBox.Header>
<StackPanel>
<Label
Content="A"
Visibility="{Binding Path=a_visible, Converter={StaticResource boolToVis}}"
/>
<Label
Content="B"
Visibility="{Binding Path=b_visible, Converter={StaticResource boolToVis}}"
/>
</StackPanel>
</GroupBox>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<CheckBox
Content="A Visible"
Grid.Column="0"
Grid.Row="1"
IsChecked="{Binding Path=a_visible, Mode=TwoWay}"
/>
<CheckBox
Content="B Visible"
Grid.Column="1"
Grid.Row="1"
IsChecked="{Binding Path=b_visible, Mode=TwoWay}"
/>
</Grid>
</StackPanel>
この問題は、これを複数回実行でき、バインディングを離れる心配がないようにしたいということです。だから私の質問は、これを一般的に、好ましくはスタイルで行う方法がある。もう一つの要件は、xamlにコードがないことでなければならないということです。
私の理想的な答えはスタイルなので、私はxamlで次のことができます。
私はこれらの質問を見て、これが可能ではないと思うように導いています。 binding in controltemplate,stackpanel visibility,border visibility。
ご迷惑をおかけして申し訳ございません。すべての回答/コメントに感謝します。
<StackPanel>
<GroupBox>
<GroupBox.Header>
<Label Content="GroupBox"/>
</GroupBox.Header>
<StackPanel>
<Label x:Name="lbl_a" Content="A" Visibility="{Binding IsChecked, ElementName=chk_a, Converter={StaticResource boolToVis}}" />
<Label x:Name="lbl_b" Content="B" Visibility="{Binding IsChecked, ElementName=chk_b, Converter={StaticResource boolToVis}}" />
</StackPanel>
<GroupBox.Style>
<Style TargetType="GroupBox">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Visibility, ElementName=lbl_a}" Value="Collapsed" />
<Condition Binding="{Binding Visibility, ElementName=lbl_b}" Value="Collapsed" />
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="GroupBox.Visibility" Value="Collapsed" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</GroupBox.Style>
</GroupBox>
<CheckBox x:Name="chk_a" Content="A Visible" Grid.Column="0" Grid.Row="1" />
<CheckBox x:Name="chk_b" Content="B Visible" Grid.Column="1" Grid.Row="1" />
</StackPanel>
しかし、別のGroupBoxを作成したり、別のアイテムを追加したい場合、毎回条件を追加する必要はありませんか?これは、MultiBindingと同じ問題です – davidcorne