【发布时间】:2014-01-30 19:22:52
【问题描述】:
从分组项目页面模板开始,我希望能够在单击网格项目时对它们执行任务。即,我想更改背景图像,并将基础对象添加/删除到所选项目列表中。
这是我的数据模板:
<GridView.ItemTemplate>
<DataTemplate>
<Border BorderBrush="LightGray" BorderThickness="2" Margin="0,0,20,20">
<Grid HorizontalAlignment="Left" Width="390" Height="190">
<Grid.Background>
<ImageBrush ImageSource="/Assets/unselected.png" Stretch="None"/>
</Grid.Background>
<StackPanel Orientation="Horizontal" VerticalAlignment="Top">
<Image VerticalAlignment="Top" Stretch="None" Source="{Binding ImageUrl}" Margin="10,10,0,0"/>
<StackPanel MaxWidth="270">
<TextBlock Text="{Binding Summary}"/>
<TextBlock Text="{Binding Brand}" />
<TextBlock Text="{Binding Detail}" TextWrapping="Wrap" />
</StackPanel>
</StackPanel>
</Grid>
</Border>
</DataTemplate>
</GridView.ItemTemplate>
OnTap,我想将 Grid.Background 的 ImageSource 值从 unselected.png 切换到 selected.png。我相信我可以使用 VisualStates 和 Storyboards 来做到这一点,但我过去一直无法让它工作(我会让你避免我在 xaml 中尝试的混乱)。
不用说,我已尝试使用 Blend 遵循详细的步骤 here,但 Grid.Background 属性似乎不是特定于状态的。如果我尝试在 Pressed 或 Selected 状态下更改背景画笔,它也会更改为 Normal 状态。
由于我想获取所选项目的数据上下文并从列表中添加/删除它,我是否应该在 OnTap 事件处理程序中一起处理所有这些?我希望将这些问题分开,但我会做我需要做的......
谢谢!
【问题讨论】:
标签: wpf xaml windows-8 winrt-xaml expression-blend