none
accordion 定义了有一个item定义 accordionitem.header 中包含 radionbutton 为什么不可选,要切换到别的item后才可选 RRS feed

  • 问题

  • <layoutToolkit:Accordion Grid.Row="1" Grid.Column="0" Margin="0,0,5,0" Height="270"    >
                <layoutToolkit:AccordionItem  Tag="bbd"  Selected="AccordionItem_Selected" VerticalAlignment="Center"  Background="LightGray"  x:Name="fly_acc" IsSelected="False"  >
                    <layoutToolkit:AccordionItem.Header >
                        <StackPanel Orientation="Horizontal" >
                            <TextBlock Text="三班排序"/>
                            <RadioButton Tag="bbd" Content="当日板块" IsChecked="true"  GroupName="r1" /><RadioButton Tag="bbd" Content="一班排序" GroupName="r1" /><RadioButton Tag="bbd" Content="二班排序" GroupName="r1" />
                        </StackPanel>
                    </layoutToolkit:AccordionItem.Header>
         <layoutToolkit:AccordionItem.Content />
        </layoutToolkit:AccordionItem> 
    2009年7月14日 5:09

答案

  • 你好,
    设计就是这样的,选中的AccordionItem会被Lock住,触发UpdateVisualState进而调用VSM来disable元素.如果你觉得这样设计不是很好欢迎到下面的地方提意见:
    http://silverlight.codeplex.com/

    private void SetLockedProperties()
    {
        for (int i = 0; i < base.Items.Count; i++)
        {
            AccordionItem item = base.ItemContainerGenerator.ContainerFromIndex(i) as AccordionItem;
            if (item != null)
            {
                item.IsLocked = (item.IsSelected && this.IsMinimumOneSelected) && (this.SelectedIndices.Count == 1);
            }
        }
    }

     public bool IsLocked
    {
        get
        {
            return this._isLocked;
        }
        internal set
        {
            if (this._isLocked != value)
            {
                this._isLocked = value;
                this.UpdateVisualState(true);
            }
        }
    }

    internal virtual void UpdateVisualState(bool useTransitions)
    {
        if (this.IsLocked)
        {
            VisualStates.GoToState(this, useTransitions, new string[] { "Locked" });
        }
    ...
    }

    <vsm:VisualStateGroup x:Name="LockedStates">
                      <vsm:VisualStateGroup.Transitions>
                          <vsm:VisualTransition GeneratedDuration="0" />
                      </vsm:VisualStateGroup.Transitions>
                      <vsm:VisualState x:Name="Locked">
                          <Storyboard>
                              <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="ExpanderButton" Storyboard.TargetProperty="IsEnabled">
                                  <DiscreteObjectKeyFrame KeyTime="0" Value="False" />
                              </ObjectAnimationUsingKeyFrames>
                          </Storyboard>
                      </vsm:VisualState>
                      <vsm:VisualState x:Name="Unlocked">
                          <Storyboard>
                              <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="ExpanderButton" Storyboard.TargetProperty="IsEnabled">
                                  <DiscreteObjectKeyFrame KeyTime="0" Value="True" />
                              </ObjectAnimationUsingKeyFrames>
                          </Storyboard>
                      </vsm:VisualState>
                  </vsm:VisualStateGroup>


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    2009年7月21日 7:21
    版主