WPF中 ToggleButton的问题

大海啊全是水 2010-02-08 03:55:16
我现在想做一个ToggleButton控件。 它有6种图片 表示 6个状态,
1 Unchecked, Normal
2 Unchecked,MouseOver
3 Unchecked, Pressed
4 Checked, Normal
5 Checked, MouseOver
6 Checked, Pressed
现在换图片时通过用Setter 更改图片的Source 但是我不知道如何既表示MouseOver同时也可以知道他是Checked的状态。不知道事件触发那里该怎么写

namespace MyDemo
{
public class ImageToggleButton : ToggleButton
{
static ImageToggleButton()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(ImageToggleButton), new FrameworkPropertyMetadata(typeof(ImageToggleButton)));

Check_NormalStateProperty = DependencyProperty.Register("Check_NormalState", typeof(string), typeof(ImageToggleButton));
Check_MouseOverStateProperty = DependencyProperty.Register("Check_MouseOverState", typeof(string), typeof(ImageToggleButton));
Check_PressedStateProperty = DependencyProperty.Register("Check_PressedState", typeof(string), typeof(ImageToggleButton));

Uncheck_NormalStateProperty = DependencyProperty.Register("Uncheck_NormalState", typeof(string), typeof(ImageToggleButton));
Uncheck_MouseOverStateProperty = DependencyProperty.Register("Uncheck_MouseOverState", typeof(string), typeof(ImageToggleButton));
Uncheck_PressedStateProperty = DependencyProperty.Register("Uncheck_PressedState", typeof(string), typeof(ImageToggleButton));
}

public string Check_NormalState
{
get { return (string)GetValue(Check_NormalStateProperty); }
set { SetValue(Check_NormalStateProperty, value); }
}

public string Check_MouseOverState
{
get { return (string)GetValue(Check_MouseOverStateProperty); }
set { SetValue(Check_MouseOverStateProperty, value); }
}

public string Check_PressedState
{
get { return (string)GetValue(Check_PressedStateProperty); }
set { SetValue(Check_PressedStateProperty, value); }
}

public string Uncheck_NormalState
{
get { return (string)GetValue(Uncheck_NormalStateProperty); }
set { SetValue(Uncheck_NormalStateProperty, value); }
}

public string Uncheck_MouseOverState
{
get { return (string)GetValue(Uncheck_MouseOverStateProperty); }
set { SetValue(Uncheck_MouseOverStateProperty, value); }
}

public string Uncheck_PressedState
{
get { return (string)GetValue(Uncheck_PressedStateProperty); }
set { SetValue(Uncheck_PressedStateProperty, value); }
}

public static DependencyProperty Check_NormalStateProperty;
public static DependencyProperty Check_MouseOverStateProperty;
public static DependencyProperty Check_PressedStateProperty;

public static DependencyProperty Uncheck_NormalStateProperty;
public static DependencyProperty Uncheck_MouseOverStateProperty;
public static DependencyProperty Uncheck_PressedStateProperty;
}
}




<Style TargetType="{x:Type local:ImageToggleButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ImageToggleButton}">
<Border>
<Image Name="imgground" Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(local:ImageToggleButton.Uncheck_NormalState)}" Stretch="Fill"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="imgground" Property="Source" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(local:ImageToggleButton.Check_NormalState)}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True" >
<Setter TargetName="imgground" Property="Source" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(local:ImageToggleButton.Check_MouseOverState)}"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="imgground" Property="Source" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(local:ImageToggleButton.Check_PressedState)}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>


不知道<ControlTemplate.Triggers>里面该怎么写
...全文
714 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
llzjyang 2010-09-13
  • 打赏
  • 举报
回复
为什么我设置不了<ControlTemplate.Triggers>?
大海啊全是水 2010-02-08
  • 打赏
  • 举报
回复
引用 2 楼 0009 的回复:
引用 1 楼 tianhaoma8888 的回复:发现个MulitTrigger, 安逸,研究研究....

恭喜,MulitTrigger是正解

呵呵,结了。。。谢谢了哈
RexZheng 2010-02-08
  • 打赏
  • 举报
回复
引用 1 楼 tianhaoma8888 的回复:
发现个MulitTrigger, 安逸,研究研究....


恭喜,MulitTrigger是正解
大海啊全是水 2010-02-08
  • 打赏
  • 举报
回复
发现个MulitTrigger, 安逸,研究研究....

111,123

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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