簡體   English   中英

[UWP]自定義控件的視覺狀態不起作用

[英][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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM