[英]UWP unfocused VisualState overriding selected VisualState on ListViewItem
[英][UWP]Custom control visualstate not work
我在Windows 10 UWP應用中創建了一個名為CustomControl1
的自定義控件
public sealed class CustomControl1 : ButtonBase
{
public CustomControl1()
{
this.DefaultStyleKey = typeof(CustomControl1);
}
}
以及Generic.xaml
的默認樣式
<Style TargetType="local:CustomControl1" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:CustomControl1">
<Border>
<TextBlock x:Name="textBlock" Text="This is a text block"/>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="VisualStateGroup">
<VisualState x:Name="Normal"/>
<VisualState x:Name="PointerOver">
<VisualState.Setters>
<Setter Target="textBlock.Foreground" Value="Red"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Pressed">
<VisualState.Setters>
<Setter Target="textBlock.TextBlock" Value="Blue"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
問題是TextBlock的前景不會在鼠標懸停時變為Red
,也不會在按下時變為Blue
。 但是,如果我將CustomControl1
的基類更改為Button
則可以正常工作。
public sealed class CustomControl1 : Button
{
public CustomControl1()
{
this.DefaultStyleKey = typeof(CustomControl1);
}
}
兩種情況有何不同?
因為Button具有您使用的視覺狀態,而ButtonBase沒有。 因此,當您為ButtonBase編寫模板時,控件本身不會激活任何視覺狀態,因此您的文本顏色不會更改。 另一方面,按鈕起作用,並且顏色改變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.