我在Silverlight TreeviewItem的样式中定义了一个Toggle按钮,我希望它以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>
答案 0 :(得分:1)
我非常希望TreeviewItem
类中的代码将根据自身IsChecked
属性的状态专门指定IsExpanded
。
尝试在您的样式中添加另一个setter: -
<Setter Property="IsExpanded" Value="True" />
默认情况下,这应该将TreeViewItem置于展开状态,并且可能导致TreeviewItem
同时将ExpanderButton IsChecked设置为true。
答案 1 :(得分:0)
您也可以尝试将其设置为(n隐式)样式,但我怀疑可能会发生某些事情(TreeView?)重置它的运行时,否则不应该发生您的设置无效