是什么赋予了w8 xaml中的悬停和点击样式?

时间:2013-09-30 08:44:01

标签: xaml windows-8 windows-store-apps winrt-xaml

在w8应用中使用listitem时,如何确定是什么赋予了悬停和点击样式?

我的列表视图如下所示:

<ListView x:Name="itemsListView"
          TabIndex="1"
          Visibility="Visible"
          Padding="10,0,0,0" Foreground="Black"
          ItemsSource="{Binding Nodes.Nodes}"
          behaviors:ListViewItemClickedToAction.Action="{Binding SelectNodeAction}"
          IsItemClickEnabled="True" FontFamily="Global User Interface"
          >
    <ListView.ItemTemplate>
        <DataTemplate>
                <TextBlock Text="{Binding Name}" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

当我使用鼠标悬停时,我会得到白色字母和几乎白色的背景。

我已经尝试重复使用部分冒险工作购物者应用程序,因此有复制的样式。但是,我无法理解应用于ListView项目的内容。

2 个答案:

答案 0 :(得分:1)

您需要创建自定义ListViewItem,请查看ListViewItem styles and templates

您需要自定义各种视觉状态。

答案 1 :(得分:1)

您可能已经是新手了但是如果您查看screenshot,您可以看到您在VS2012中如何轻松创建内置样式的副本。当您按下“编辑副本...”时,将出现一个对话框,您可以在其中选择项目中要放置样式的位置。

您可以继承样式。样式的继承性以下列方式起作用:

<Style x:Name="BasicStyle" TargetType="Button">
    <Setter Property="Background" Value="Green" />
</Style>

<Style x:Name="ButtonStyle" TargetType="Button" BasedOn="{StaticResource BasicStyle}">
    <Setter Property="Foreground" Value="Red" />
</Style>

您可以在几个步骤中执行继承,因此另一个按钮样式可以继承“ButtonStyle”。 因此,如果要分离模板属性或重用行为和样式,则可以创建仅包含Template属性的样式。但是您无法将Visual State Manager拆分为多种样式,因为如果继承了设置模板属性的样式,那么如果要更改该样式的Hover状态,则需要复制整个模板并仅更改该部分在代码中。

我认为,如果你能制作一个只包含按下状态的样式,然后是另一种只包含悬停效果的样式,那将是MS的一个很好的改进。

我希望这能回答你的问题:)如果您有任何问题,我很乐意回答有关XAML的更多问题!