【问题标题】:How to set default IsChecked value for Silverlight ToggleButton如何为 Silverlight ToggleButton 设置默认 IsChecked 值
【发布时间】:2011-03-31 04:33:44
【问题描述】:

我在 Silverlight TreeviewItem 的样式中定义了一个切换按钮,我希望它以 IsChecked=true 状态开始。我尝试简单地设置 IsChecked=True,但没有效果。

谢谢

XAML 示例:

<Style x:Name="CheckedToggleButton"
       TargetType="ToggleButton">
    <Setter Property="IsChecked"
            Value="True" />
    <Setter Property="Margin"
            Value="0" />
</Style>

<Style x:Key="TreeViewItemStyle"
       TargetType="controls:TreeViewItem">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="controls:TreeViewItem">
                <Grid Margin="2">
                    <Grid.RowDefinitions>
                        <!--ContentPresenter Row-->
                        <RowDefinition Height="Auto" />
                        <!--ExpanderButton Row-->
                        <RowDefinition Height="Auto" />
                        <!--ItemsPresenter Row-->
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <ContentPresenter Cursor="{TemplateBinding Cursor}"
                                      HorizontalAlignment="Stretch"
                                      Margin="{TemplateBinding Padding}"
                                      x:Name="content"
                                      Content="{TemplateBinding Header}"
                                      ContentTemplate="{TemplateBinding HeaderTemplate}"
                                      Grid.RowSpan="1"/>
                    <ToggleButton x:Name="ExpanderButton"
                                  Style="{StaticResource CheckedToggleButton}"
                                  IsChecked="True"
                                  HorizontalAlignment="Center"
                                  VerticalAlignment="Bottom"
                                  Width="15"
                                  Height="15"
                                  Grid.Row="1" />
                    <ItemsPresenter x:Name="ItemsHost"
                                    Visibility="{Binding ElementName=ExpanderButton, Path=IsChecked, Converter={StaticResource boolviz}}"
                                    Grid.Row="2"
                                    HorizontalAlignment="Stretch" />
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

【问题讨论】:

    标签: silverlight xaml togglebutton


    【解决方案1】:

    我非常希望TreeviewItem 类中的代码将根据自己的IsExpanded 属性的状态专门分配IsChecked

    尝试为您的样式添加另一个 setter:-

     <Setter Property="IsExpanded" Value="True" />
    

    默认情况下,这应该将 TreeViewItem 置于展开状态,并且可能会导致 TreeviewItem 同时将 ExpanderButton IsChecked 设置为 true。

    【讨论】:

      【解决方案2】:

      您也可以尝试将其设置为(n 隐式)样式,但我怀疑可能会发生某些事情(TreeView?)在运行时重置它,否则不应该发生您的设置无效.

      【讨论】:

      • 试过设置样式,但还是没有勾选。
      • 奇怪,你能发布一些 XAML 吗?
      • 将 xaml 添加到原始问题中。
      猜你喜欢
      • 2017-04-04
      • 2014-06-05
      • 2011-08-31
      • 2020-12-14
      • 2012-05-02
      • 2017-12-26
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      相关资源
      最近更新 更多