2015-09-29 2 views
0

У меня есть шесть элементов панели панели, которые переключаются всеми отдельными кнопками переключения, которые мне нужны. Однако, когда пользователь открывает одну из панелей стека, я хотел бы закрыть все остальные и просто показать тот, на который они нажали.WPF переключает видимость между 6 панелями стека и скрывает все остальные при открытии

<Grid HorizontalAlignment="Left" Height="504" Margin="-1,1,0,0" VerticalAlignment="Top" Width="760"> 

    <Grid.Resources> 
     <BooleanToVisibilityConverter x:Key="boolConverter" /> 
    </Grid.Resources> 

    <StackPanel HorizontalAlignment="Left" Height="505" VerticalAlignment="Top" Width="124" Background="#FF45B8F9" Margin="1,-1,0,0"/> 

    <StackPanel HorizontalAlignment="Left" Height="505" VerticalAlignment="Top" Width="124" Background="#FFF95545" Margin="636,0,0,-1" Visibility="{Binding ElementName=button, Path=IsChecked, Converter={StaticResource boolConverter}}"/> 

    <StackPanel HorizontalAlignment="Left" Height="505" VerticalAlignment="Top" Width="124" Background="#FFF9F945" Margin="507,-1,0,0" Visibility="{Binding ElementName=button_Copy, Path=IsChecked, Converter={StaticResource boolConverter}}"/> 

    <StackPanel HorizontalAlignment="Left" Height="505" VerticalAlignment="Top" Width="124" Background="#FF76F945" Margin="378,-1,0,0" Visibility="{Binding ElementName=button1, Path=IsChecked, Converter={StaticResource boolConverter}}"/> 

    <ToggleButton x:Name="button" Content="Green" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="105" Click="button_Click"/> 

    <ToggleButton x:Name="button_Copy" Content="Yellow" HorizontalAlignment="Left" Margin="10,55,0,0" VerticalAlignment="Top" Width="105" Click="button_Click"/> 

    <ToggleButton x:Name="button1" Content="Red" HorizontalAlignment="Left" Margin="10,114,0,0" VerticalAlignment="Top" Width="105"/> 

</Grid> 
+0

Вы должны действительно использовать RowDefinitions и ColumnDefinitions для Grid. Вы сказали, что у вас есть 6 стековых панелей, но я просто вижу 4. Также количество переключателей не равно количеству стековых панелей (хотя я думал, что для каждой панели стека каждая должна быть каждая кнопка). – Hopeless

+0

Я сохранил его в конденсированном состоянии. Я решил, что решение, примененное к 3, может быть применено к еще 3 панелям. Одной из панелей является основная панель управления. –

ответ

1

Сделать заказ шаблон RadioButton для отображения как Expander:

<Style TargetType="{x:Type RadioButton}"> 
    <Setter Property="GroupName" Value="MyToggleButtonGroupName"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type RadioButton}"> 
       <Expander IsExpanded="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsChecked}"> 
        <ContentPresenter/> 
       </Expander> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

<RadioButton> 
    <StackPanel>...</StackPanel> 
</RadioButton> 
<RadioButton> 
    <StackPanel>...</StackPanel> 
</RadioButton> 
<RadioButton> 
    <StackPanel>...</StackPanel> 
</RadioButton>