Es sei denn, wenn Sie einen guten Grund haben die BorderWidth
aus Ihrem Viewmodel (zB berechneten Breite abhängig von anderen Eigenschaften Ihres Ansichtsmodell/Modell zu setzen, können Sie einfach den Standard GridViewItem
Stil bearbeiten und die VisualStateManager
verwenden, um das PointerOver
Ereignis zu behandeln .
Sie die Standardformate auf Ihrer Festplatte
C, mit einer Datei pro SDK-Version finden Sie unter:. \ Program Files (x86) \ Windows- Kits \ 10 \ Designtime \ CommonConfiguration \ Neutral \ UAP \ 10.0.10240.0 \ Generic \ generic.xaml C: \ Program Files (x86) \ Windows- Kits \ 10 \ Designtime \ CommonConfiguration \ Neutral \ UAP \ 10.0.10586.0 \ Generisches \ generic.xaml
Oder Sie können sie auch auf MSDN, wie die finden eine für GridViewItem. Sie können auch edit the existing style in Blend.
Sie werden mit einem benutzerdefinierten Stil mit einem Namen (x: Key) enden, den Sie auf Ihrem VariableSizedGrid
's verwenden können. Der Teil im Stil, die Sie bearbeiten müssen, ist im PointerOver
visuellen Zustand:
<VisualState x:Name="PointerOver">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="BorderRectangle"
Storyboard.TargetProperty="Opacity"
Duration="0"
To="1"/>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderRectangle" Storyboard.TargetProperty="Stroke">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListLowBrush}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="FocusVisualBlack" Storyboard.TargetProperty="Stroke">
<DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" />
</ObjectAnimationUsingKeyFrames>
<PointerUpThemeAnimation Storyboard.TargetName="ContentPresenter" />
</Storyboard>
</VisualState>
Wie Sie sehen können, bereits der Staat eine andere DoubleAnimation
für die BorderThickness
Eigenschaften der Opacity
und Stroke
, fügen Sie einfach ändert. Andere Staaten verwenden den Standard.
Mögliches Duplikat von [Wie SelectedBackground in ListViewItemPresenter in einem GridView geändert wird] (http://stackoverflow.com/questions/38705396/how-to-change-selectedbackground-in-listviewitempesenter-inside-a-gridview) –
This ist ein UI-Problem, daher sollte Ihre VM nicht beteiligt sein. – Will