0
請幫助我把事情放在一起。在城域UI應用程序中更改所選ListViewItem的文本顏色
我正在使用包含ListView的Windows 8 metro應用程序。我的列表視圖包含TextBlocks。 事情是這樣的:
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的顏色,所以在設計模式下,我選擇「編輯其他模板/編輯生成的項容器」創造的ListViewItem的風格自己的副本內StandardStyles.xml:
<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的顏色應該是黑色的。如果沒有選擇項目 - 白色。
這裏是一個問題:在哪裏應該把chaning TextBlock顏色的邏輯?如果在StandardStyles.xml中的某處,我將如何將它分配給TextBlock?如果在列表視圖項目模板中的某個地方,那麼我應該如何獲得選擇狀態?
非常感謝您的幫助! 謝謝。
不幸的是在WinRT中無觸發。 –
嗯,我學到了一些新東西!在這種情況下,您將需要使用VisualStateManager。我會更新我的答案。 –
Richard,在我的第一篇文章中,我爲ChainsListViewItemStyle放置了樣式。並在文中有一條評論: <! - 視覺狀態描述在這裏(我改變了一些顏色) - > 所以我已經玩視覺狀態和改變顏色。但是我看不出如何從可視狀態引用DataTemplate中描述的TextBlock。你提出的方法將無法工作,因爲實際上我有幾個TextBlocks,它們應該是不同的顏色。更改ContentPresenters的屬性是不夠的。 –