如何把东西放在一起?
我正在开发包含 ListView 的 Windows 8 Metro 应用程序。我的列表视图包含文本块。像这样的东西:
MyPage.xaml:
<DataTemplate x:Key="ListViewItemTemplate">
<StackPanel>
<TextBlock Text="{Binding Goal, Mode=OneWay}"/>
</StackPanel>
</DataTemplate>
<ListView x:Name="ChainsList"
ItemsSource="{Binding Chains}"
SelectedItem="{Binding Path=SelectedChain, Mode=TwoWay}"
ItemTemplate="{StaticResource ListViewItemTemplate}"
ItemContainerStyle="{StaticResource ChainsListViewItemStyle}">
</ListView>
我不喜欢选定/取消选定项目的默认 ListView 颜色,因此在设计器模式下,我选择了“编辑其他模板/编辑生成的项目容器”并在 StandardStyles.xml 中创建了自己的 ListViewItem 样式副本:
<Style x:Key="ChainsListViewItemStyle" TargetType="ListViewItem">
<!-- a lot of setters goes here -->
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Border x:Name="OuterContainer">
<!-- description of visual states goes here (I changed some colors) -->
<Grid x:Name="ReorderHintContent" Background="Transparent">
<!-- List view item structure details goes here -->
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
现在我想根据选择更改列表视图项的文本颜色。如果项目选择了 TextBlock 的颜色应该是黑色的。如果未选择项目 - 白色。
这里有一个问题:我应该把改变 TextBlock 颜色的逻辑放在哪里?如果在 StandardStyles.xml 中的某个地方,那么我将如何将它分配给 TextBlock?如果在列表视图项模板中的某个地方,那么我应该如何获得选择状态?