我想把silverlight treeview 节点前面的小三角换成别的图片,怎么实现呢?

ningxindong 2010-06-11 09:56:36
我想把silverlight treeview 节点前面的小三角换成别的图片,怎么实现呢?

网上看到说更改样式,可是不知道具体怎么做?谁能帮帮忙。

贴段代码出来,或这把例子发我邮箱。谢谢nxdzj1@163.com
...全文
951 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
orphan001 2011-02-24
  • 打赏
  • 举报
回复
佛如、
ningxindong 2010-06-22
  • 打赏
  • 举报
回复
我搞定了
ningxindong 2010-06-22
  • 打赏
  • 举报
回复
还有问题,等节点展开后怎么换成另一个图片啊
Sunpire 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sjyanxin 的回复:]
<Image x:Name="UncheckedVisual" Opacity="0" Source="a.jpg" ></Image>
<Image x:Name="CheckedVisual" Opacity="1" Source="b.jpg" ></Image>
[/Quote]

使用一个 Image 就可以了,节省点内存 。而且设置 Opacity 属性没有设置 Visbility 彻底,像 Opacity = 0 时,已设置的 Tooltip 是依然生效的。


<VisualState x:Name="Checked">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="0" Duration="0" Storyboard.TargetName="imageState" Storyboard.TargetProperty="(Image.Source)">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<BitmapImage >选中状态的图片Uri</BitmapImage >
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
...
<Image x:Name="imageState" Source="未选中状态的图片Uri" ></Image>


sjyanxin 2010-06-11
  • 打赏
  • 举报
回复

<ToggleButton x:Name="ExpanderButton" IsTabStop="False" TabNavigation="Once" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ToggleButton.Template>
<ControlTemplate TargetType="ToggleButton">
<Grid x:Name="Root" Background="Transparent">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<!--<VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimation Duration="0" Storyboard.TargetName="UncheckedVisual" Storyboard.TargetProperty="(Path.Stroke).Color" To="#FF1BBBFA"/>
</Storyboard>
</VisualState>-->
<VisualState x:Name="Disabled">
<Storyboard>
<DoubleAnimation Duration="0" Storyboard.TargetName="Root" Storyboard.TargetProperty="Opacity" To=".7"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="CheckStates">
<VisualState x:Name="Unchecked"/>
<VisualState x:Name="Checked">
<Storyboard>
<DoubleAnimation Duration="0" Storyboard.TargetName="UncheckedVisual" Storyboard.TargetProperty="Opacity" To="1"/>
<DoubleAnimation Duration="0" Storyboard.TargetName="CheckedVisual" Storyboard.TargetProperty="Opacity" To="0"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid HorizontalAlignment="Right" Margin="2 2 5 2">
<Image x:Name="UncheckedVisual" Opacity="0" Source="a.jpg" ></Image>
<Image x:Name="CheckedVisual" Opacity="1" Source="b.jpg" ></Image>
<!--<Path x:Name="UncheckedVisual" Fill="#FFFFFFFF" Stroke="#FF989898" StrokeLineJoin="Miter" StrokeThickness="1" Height="9" HorizontalAlignment="Right" VerticalAlignment="Center" Width="6" Data="M 0,0 L 0,9 L 5,4.5 Z"/>
<Path x:Name="CheckedVisual" Fill="#FF262626" StrokeLineJoin="Miter" Height="6" HorizontalAlignment="Center" VerticalAlignment="Center" Width="6" Opacity="0" Data="M 6,0 L 6,6 L 0,6 Z"/>-->
</Grid>
</Grid>
</ControlTemplate>
</ToggleButton.Template>
</ToggleButton>

Sunpire 2010-06-11
  • 打赏
  • 举报
回复
那是 TreeViewItem 中的一个部件,
名为 ExpanderButton ,类型为 ToggleButton ,功能:用于展开 TreeView 控件的 ToggleButton。

很遗憾 TreeViewItem 似乎没有单独把设置这个ExpanderButton的Style公开出来,
所以要改就只能为整个 TreeViewItem 指定Style了。

在帮助文档中打开 TreeViewItem 的默认样式,找到

<ToggleButton x:Name="ExpanderButton" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" IsTabStop="False" TabNavigation="Once">
<ToggleButton.Template>
<ControlTemplate TargetType="ToggleButton">

从这里开始更改就是了

TreeViewItem 的默认样式也可以见这里:
http://msdn.microsoft.com/zh-cn/library/dd728671(VS.95).aspx
ningxindong 2010-06-11
  • 打赏
  • 举报
回复
ding
ningxindong 2010-06-11
  • 打赏
  • 举报
回复
顶起来

8,737

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧