Я довольно новичок в WPF. Я пишу небольшую пробную версию на основе Demo из ToggleSwitch avaiable на Codeplex: https://toggleswitch.codeplex.com/Несколько конвертеров Bool to Visibility в WPF
В основном есть 4 кнопки радиосвязи, связанные с 4 файлами xaml (как показано в демонстрации из ссылки, которую я написал выше). Давайте назовем их Base1.xml, Base2.xml и т. Д.
Тогда я хотел сделать то же самое для одного из этих файлов. Я положил в Base2.xml 3 переключателя для 3 xamls - Sub1.xml Sub2.xml Sub3.xml. Я скопировал логику, а затем столкнулся с проблемой. Один из Subx.xml всегда отображается.
я, хотя, что это видно/разрушилась проблема, и она должна быть видимой/скрыт, поэтому я попытался решения по этой ссылке: 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