2

StandardStyles.xaml の DataTemplate には、次の StackPanel があります。

<DataTemplate x:Key="Standard160x160ItemTemplate">
    <Grid HorizontalAlignment="Left" Width="160" Height="160">
        ...
        <StackPanel 
            VerticalAlignment="Top" 
            Background="{StaticResource ListViewItemOverlayBackgroundThemeBrush}">
            <TextBlock Text="{Binding UniqueID}" 
                       Foreground="{StaticResource ListViewItemOverlayForegroundThemeBrush}" 
                       Style="{StaticResource TitleTextStyle}" Height="30" Margin="15,0,15,0"/>
        </StackPanel>
        ...
    </Grid>
</DataTemplate>

「uniqueID」は「Product」クラスのプロパティです。

Public NotInheritable Class Product
    Private Property _sUID As String = String.Empty
    Public Property UniqueID As String
        Get
            Return Me._sUID
        End Get
        Set(value As String)
            Me.SetProperty(Me._sUID, value)
        End Set
    End Property
    ...
End Class

上記のテンプレート「Standard160x160ItemTemplate」を次のようなグリッド ビュー アイテムで使用します。

                   <GridView Height="210" 
                        x:Name="ItemView"
                        SelectionMode="None"
                        ItemsSource="{Binding Source={StaticResource itemsViewSource}}">
                        <GridViewItem
                            x:Name="GridViewItem"
                            ContentTemplate="{StaticResource Standard160x160ItemTemplate}" 
                            Tapped="GridViewItem_Tapped">
                            <GridViewItem.Style>
                                <Style TargetType="FrameworkElement">
                                    <Setter Property="Margin" Value="0,0,0,0"/>
                                </Style>
                            </GridViewItem.Style>
                        </GridViewItem>
                    </GridView>

これはうまく機能し、本来あるべきことを行います。

ただし、場合によっては (「Product」オブジェクトの他の 2 つのプロパティに応じて、特にそのうちの 1 つが他のプロパティよりも UInt 値が低い場合)、StackPanel の背景を「{StaticResource」ではなく「赤」に変更したい場合があります。 ListViewItemOverlayBackgroundThemeBrush}".

私はそれが可能であることを疑いませんが、私は XAML を初めて使用し (VB ではありません)、まだ何千もの XAML タグに圧倒されており、解決策を見つけるのに本当に苦労しています。

問題は、「製品」プロパティ「A」と「B」に基づいて、テンプレートの背景を動的に変更するにはどうすればよいですか?

4

1 に答える 1

1

おそらく最善の方法は、カスタム IValueConverter を使用することです。MSDN の例を次に示します

于 2012-12-09T12:29:13.210 に答える