1

この定義を含むMetroアプリがあります。ListView

        <ListView Grid.Row="0" x:Name="lv" CanDragItems="True" CanReorderItems="True" IsTabStop="True" SelectionMode="Extended" VirtualizingStackPanel.VirtualizationMode="Recycling">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid Width="{Binding ElementName=lv, Path=ActualWidth}">
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition/>
                        </Grid.RowDefinitions>

                        <Grid Grid.Row="0">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="65"/>
                            </Grid.ColumnDefinitions>

                            <TextBlock Grid.Column="0" x:Name="tb1" Foreground="{StaticResource SecondaryColourBrush}" HorizontalAlignment="Stretch"/>

                            <TextBlock Grid.Column="4" x:Name="tb2" Foreground="{StaticResource SecondaryColourBrush}" HorizontalAlignment="Right"/>

                        </Grid>

                        <Grid Grid.Row="1">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="65"/>
                            </Grid.ColumnDefinitions>

                            <TextBlock Grid.Column="0" x:Name="tb3" Foreground="{StaticResource QuadColourBrush}" HorizontalAlignment="Stretch" TextTrimming="WordEllipsis"/>

                            <TextBlock Grid.Column="1" x:Name="tb4" Foreground="{StaticResource QuadColourBrush}" HorizontalAlignment="Right"/>

                        </Grid>

                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

に項目が選択されている場合、のとのみListViewに変更したい。どうすればこれを行うことができますか?Foregroundtb1tb2 White

テーマ ブラシVisualStateGroup SelectionStatesfor をオーバーライドしようとしましSelectedたが、役に立ちませんでした。実際のコード例をいただければ幸いです。

4

1 に答える 1

4

最終的にこれを解決しました。アイデアを提供してくれたこの記事に感謝します。

http://blog.davemdavis.net/2012/11/12/controlling-the-datatemplate/

を作成しましたBooleanToColourConverter

public sealed class BooleanToColourConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return (value is bool && (bool)value) ? AppResources.TertiaryColourBrush : AppResources.PrimaryColourBrush;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        return value is SolidColorBrush && ((SolidColorBrush)value).Color == AppResources.TertiaryColourBrush.Color;
    }
}

これを App.xaml に追加しました

<common:BooleanToColourConverter x:Key="BooleanToColourConverter"/>

次に、次のように使用しました。

Foreground="{Binding Tag, Converter={StaticResource BooleanToColourConverter}, Mode=TwoWay, RelativeSource={RelativeSource Mode=TemplatedParent}}"
于 2013-06-15T12:25:46.583 に答える