我按下时试图在按钮上实现外部发光效果。但是看起来我的代码不起作用。
错误
会员'Style'无法识别或访问
XAML
<menu:HomeButton
x:Name="BtnHome"
PreviewMouseDown="BtnHome_PreviewMouseDown"
TouchDown="BtnHome_TouchDown">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="20" ShadowDepth="0" Color="DarkBlue"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
注意:主页按钮是为图像菜单创建的自定义类,它响应被单击的按钮任何想法如何解决这个问题?
编辑:下面是HomeButton类:
public partial class HomeButton : UserControl, ILocale, IDisposable
{
public HomeButton()
{
InitializeComponent();
UpdateContentResource();
this.btnHome.Click += (s, e) =>
{
KioskSession.BlockEvent(true);
Debug.WriteLine("Customer click Home button - Return to Home ");
MainContentSwitcher.Instance.MoveToHome();
};
}
HomeButton
不是Button
。而不是设置<Button.Style>
,使用以下方式:
<menu:HomeButton
x:Name="BtnHome"
PreviewMouseDown="BtnHome_PreviewMouseDown"
TouchDown="BtnHome_TouchDown">
<menu:HomeButton.Style>
<Style TargetType="menu:HomeButton">
<Style.Triggers>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="20" ShadowDepth="0" Color="DarkBlue"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</menu:HomeButton.Style>
...
</menu:HomeButton>
但是,请注意,由于HomeButton
不是Button,因此您必须继承标准Button或实现自己的IsPressed依赖项属性,这应该是微不足道的(使用MouseDown和MouseUp)。
我建议你只是继承Button
而不是UserControl
。看一下你正在对元素的按下状态应用效果的事实,很明显你想将它用作Button
。
解决您的困惑,请注意用户控件的XAML和代码隐藏应始终匹配。如果你的用户控件说它继承自Button
,它应该在两个地方说。目前,HomeButton类不是这种情况,因为它在XAML中声明为Button
,在代码隐藏中声明为UserControl
。要解决此问题,请更改HomeButton
的定义:
public partial class HomeButton : UserControl, ILocale, IDisposable
至:
public partial class HomeButton : Button, ILocale, IDisposable
一切都会开始正常工作。
HomeButton
应定义为自定义Buttom
而不是UserControl
:
public class HomeButton : Button, ILocale, IDisposable
{
public HomeButton()
{
UpdateContentResource();
this.Click += (s, e) =>
{
KioskSession.BlockEvent(true);
Debug.WriteLine("Customer click Home button - Return to Home ");
MainContentSwitcher.Instance.MoveToHome();
};
}
}
<menu:HomeButton
x:Name="BtnHome"
PreviewMouseDown="BtnHome_PreviewMouseDown"
TouchDown="BtnHome_TouchDown">
<menu:HomeButton.Style>
<Style TargetType="menu:HomeButton">
<Style.Triggers>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="20" ShadowDepth="0" Color="DarkBlue"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</menu:HomeButton.Style>
</menu:HomeButton>
UserControl
没有IsPressed
属性所以你不能将你的Style
应用到UserControl
。