私はWPFの新機能がとても便利です。 https://toggleswitch.codeplex.com/複数のBoolをWPFの可視性コンバータに変換する
基本的に4つのラジオボタンが4つのxamlファイルにバインドされています(前述のリンクのデモにあるように)。さんはその後、私はこれらのファイルのいずれかのために同じものを作りたかったBase1.xml、Base2.xmlなど
それらを呼ばれてみましょう。 私は3つのxamls - Sub1.xml Sub2.xml Sub3.xml用に3つのラジオボタンをBase2.xmlに入れました。私は論理をコピーして、問題に遭遇しました。 Subx.xmlの1つが常に表示されます。これは/問題を目に見える崩壊していると、ので、私は、このリンクから解決しようとした目に見える/隠さなければならないことを
でも、私は: http://www.rhyous.com/2011/02/22/binding-visibility-to-a-bool-value-in-wpf/
をしかし、それは動作しません...
ここに私のメインのですXAML:
<ResourceDictionary>
[...]
<BooleanToVisibilityConverter x:Key="VisibilityConverter"/>
</ResourceDictionary>
<Grid>
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel x:Name="LinksStackPanel" Orientation="Horizontal">
<RadioButton Style="{StaticResource LinkStyle}" x:Name="VLink1" Content="LINK1" Margin="0,0,25,0" IsChecked="True" />
<RadioButton Style="{StaticResource LinkStyle}" x:Name="VLink2" Content="LINK2" Margin="0,0,25,0"/>
<RadioButton Style="{StaticResource LinkStyle}" x:Name="VLink3" Content="LINK3" Margin="0,0,25,0"/>
<RadioButton Style="{StaticResource LinkStyle}" x:Name="VLink4" Content="LINK4" Margin="0,0,25,0"/>
</StackPanel>
<Grid Grid.Row="1" Margin="0,10,0,0">
<MyApp:Link1 Visibility="{Binding ElementName=Link1, Path=IsChecked, Converter={StaticResource VisibilityConverter}}"/>
<MyApp:Link2 Visibility="{Binding ElementName=Link2, Path=IsChecked, Converter={StaticResource VisibilityConverter}}"/>
<MyApp:Link3 Visibility="{Binding ElementName=Link3, Path=IsChecked, Converter={StaticResource VisibilityConverter}}"/>
<MyApp:Link4 Visibility="{Binding ElementName=Link4, Path=IsChecked, Converter={StaticResource VisibilityConverter}}"/>
</Grid>
</Grid>
</Grid>
そして、ここでは私のLink2.xamlです:
<UserControl.Resources>
<ResourceDictionary>
[...]
<BooleanToVisibilityConverter x:Key="VisibilityConverter"/>
</ResourceDictionary>
</UserControl.Resources>
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel x:Name="LinksStackPanel" Orientation="Horizontal" Margin="0,0,0,0" >
<RadioButton Style="{StaticResource LinkStyle}" x:Name="vSubLink1" Content="SubLink1" Margin="25,0,25,0"/>
<RadioButton Style="{StaticResource LinkStyle}" x:Name="vSubLink2" Content="SubLink2" Margin="0,0,25,0"/>
<RadioButton Style="{StaticResource LinkStyle}" x:Name="vSubLink3" Content="SubLink3" Margin="0,0,25,0"/>
</StackPanel>
<Grid Grid.Row="1" Margin="0,10,0,0">
<MyApp:SubLink1 Visibility="{Binding ElementName=vSubLink1, Path=IsChecked, Converter={StaticResource VisibilityConverter}}"/>
<MyApp:SubLink2 Visibility="{Binding ElementName=vSubLink2, Path=IsChecked, Converter={StaticResource VisibilityConverter}}"/>
<MyApp:SubLink3 Visibility="{Binding ElementName=vSubLink3, Path=IsChecked, Converter={StaticResource VisibilityConverter}}"/>
</Grid>
</Grid>
問題を解決する方法を教えてください。
だから、あなたはおそらく、あなた自身のEnumToBooleanConverterを持つ単一のプロパティにバインドされ、あなたのラジオボタンを、持っているかの一意のグループ名でグループにラジオボタンを割り当てない限り、一度に複数のラジオボタンをチェックすることができます。あなたの "IsChecked"は何かに縛られる必要があります。 –
BoolToVisibilityConverterのコードを更新してください。あなたのコードは正常であると思われ、期待どおりに動作するはずです。 – ViVi