1

私は a を持っていて、それを 2ListViewで修正しました。DataTemplateTextBlocks

1 つ目はHeadingTextBlockを含み、2 つ目はSub-Headingを含みます。

2TextBlocks色を色違いでスタイリング。

標準ビューの例を次にListViewItem示します。

普通

選択ビューの例を次にListViewItem示します。

選択済み

私の質問は、選択したビューのForeground色を変更するにはどうすればよいですか? xamlでこれを行うことを望んでいます。明示的にスタイル設定されていないアイテムで機能するさまざまなブラシを設定してみました。TextBlocks

このシナリオを処理する方法がわかりません。

4

3 に答える 3

2

視覚的な状態を使用できます。

<ListView>
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="*"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>

                <TextBlock x:Name="txtOne" Grid.Row="0" Foreground="Green"/>
                <TextBlock x:Name="txtTwo" Grid.Row="1" Foreground="Gray"/>
                <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup x:Name="SelectionStates">
                        <VisualState x:Name="Unselected"/>
                        <VisualState x:Name="Selected">
                            <Storyboard>
                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="txtOne" Storyboard.TargetProperty="Foreground">
                                    <DiscreteObjectKeyFrame KeyTime="0" Value="Red"/>
                                </ObjectAnimationUsingKeyFrames>
                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="txtTwo" Storyboard.TargetProperty="Foreground">
                                    <DiscreteObjectKeyFrame KeyTime="0" Value="Yellow"/>
                                </ObjectAnimationUsingKeyFrames>
                            </Storyboard>
                        </VisualState>
                    </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
于 2013-04-12T18:48:14.560 に答える
1

視覚的な状態をいじる必要はありません。

ResourceDictionary で、これらのブラシ「ListBoxItemSelectedBackgroundThemeBrush」、「ListBoxItemSelectedPointerOverBackgroundThemeBrush」、「ListBoxFocusBackgroundThemeBrush」の値を設定します。アプリケーションのデフォルトのブラシをオーバーライドします。

例:

    <!-- Overrides default ListBox brushes -->
<SolidColorBrush x:Key="ListBoxItemSelectedBackgroundThemeBrush" Color="{StaticResource GreenColor}" />
<SolidColorBrush x:Key="ListBoxItemSelectedPointerOverBackgroundThemeBrush" Color="{StaticResource LightGreenColor}" />
<SolidColorBrush x:Key="ListBoxFocusBackgroundThemeBrush" Color="Transparent" />

これは、winRt のデフォルト コントロールのブラシ名を参照する WinRt で開発する場合の便利なリンクです。

WinRt の既定のブラシの名前と値

于 2013-04-19T15:10:04.567 に答える
0

独創的な研究と思考のおかげで、機能する適切な解決策が見つかりました。

Metro アプリ ListView SelectedItem SelectedVisualState

これは、他のいくつかのシナリオでも便利であることがわかります。

于 2013-06-16T13:14:17.637 に答える