2

それで、私は最近、この効果をコピーするという挑戦に不満を感じました:

<style>
a:hover {background-color:yellow; }
</style>

WinRTでのXAML実装の使用。

最も凝縮した解決策は何ですか?

4

3 に答える 3

3

さて、これが私の試みです:

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="VisualStateGroup">
        <VisualState x:Name="Normal"/>
        <VisualState x:Name="Hover">
            <Storyboard>
                <ColorAnimation To="Yellow" Duration="0"
                    Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)" 
                    Storyboard.TargetName="MyTextBox" />
            </Storyboard>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

<Grid x:Name="MyTextBox" Background="White"
        PointerEntered="MyTextBox_PointerEntered" 
        PointerExited="MyTextBox_PointerExited"
        Height="114" Width="537">
</Grid>

この:

private void MyTextBox_PointerEntered(object sender, PointerRoutedEventArgs e)
{
    VisualStateManager.GoToState(this, Hover.Name, false);
}

private void MyTextBox_PointerExited(object sender, PointerRoutedEventArgs e)
{
    VisualStateManager.GoToState(this, Normal.Name, false);
}

しかし、確かにもっと良い方法があります!

于 2012-10-02T15:47:18.147 に答える
2
<VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal"/>
                <VisualState x:Name="PointerOver">
                    <Storyboard>
                        <ColorAnimation To="Yellow" Duration="0"
                Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)" 
                Storyboard.TargetName="MyTextBox" />
                    </Storyboard>
                </VisualState>
                <VisualState x:Name="Pressed"/>
            </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

RTの「ホバー」状態は「PointerOver」です。

于 2013-09-29T19:11:19.233 に答える
0

VisualStatesとVisualStateManagerを調べる必要があると思います。ボタンコントロールだけが視覚的な状態を持っていると思います。つまり、視覚的なエンティティはボタンとして定義する必要があります(ただし、ボタンとして機能する必要はありません)。その記事の下部に、例があります。

このSOの質問は、既存のボタンからコントロールテンプレートを抽出する方法を説明するのにも役立つ場合があります。これにより、ニーズに合わせて変更できる開始点が得られます。

「最も凝縮された解決策」についても、私はそれを見たいと思います。私が見た例はすべて、20行以上のXAMLコードを必要としますが、これは私にはあまり凝縮されていないと感じています...

于 2012-06-23T13:20:40.343 に答える