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」に基づいて、テンプレートの背景を動的に変更するにはどうすればよいですか?