locked
Как оставить открытым только один Expander элемент в группе Expander элементов? RRS feed

  • Общие обсуждения

  • ExpanderList очень удобная вещь, если вы знакомы с левой панелью Outlook. Вы можете расположить Expander элемент управления в ListBox, и присвоить Expander.IsExpanded свойства ListBoxItem.IsSelected свойствам, используя ListBox единичное выделение, так можно оставить один Expander открытым. Готовый XAMLPad пример:

    <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
      <ListBox>
        <ListBox.Resources>
          <Style TargetType="{x:Type Expander}">
            <Setter
               Property="IsExpanded"
               Value="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}"/>
          </Style>
        </ListBox.Resources>
        <ListBox.Template>
          <ControlTemplate TargetType="{x:Type ListBox}">
            <ItemsPresenter/>
          </ControlTemplate>
        </ListBox.Template>
        <ListBox.ItemContainerStyle>
          <Style TargetType="{x:Type ListBoxItem}">
            <Setter Property="Template">
              <Setter.Value>
                <ControlTemplate TargetType="{x:Type ListBoxItem}">
                  <ContentPresenter Content="{TemplateBinding Content}"/>
                </ControlTemplate>
              </Setter.Value>
            </Setter>
          </Style>
        </ListBox.ItemContainerStyle>
        <Expander Background="Gray" Width="243" Header="Expander1">
          <StackPanel>
            <RadioButton Content="Eat Me" GroupName="Two"/>
            <RadioButton Content="Eat Pork" GroupName="Two"/>
            <RadioButton Content="Eat at Joe's" GroupName="Two"/>
          </StackPanel>
        </Expander>
        <Expander Background="Gray" Width="243" Header="Expander2">
          <StackPanel>
            <RadioButton Content="Pork" GroupName="Two"/>
            <RadioButton Content="Beef" GroupName="Two"/>
            <RadioButton Content="Chicken" GroupName="Two"/>
          </StackPanel>
        </Expander>
        <Expander Background="Gray" Width="243" Header="Expander3">
          <StackPanel>
            <RadioButton Content="Grill" GroupName="Two"/>
            <RadioButton Content="Bake" GroupName="Two"/>
            <RadioButton Content="Fry" GroupName="Two"/>
          </StackPanel>
        </Expander>
      </ListBox>
    </Page>
    

    Для связи [Mail]
    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 23:03 MSDN Forums consolidation (От:Разработка Windows-приложений)
    17 марта 2010 г. 11:56
    Модератор