将Style从Resource应用到ListView.ItemContainerStyle

时间:2014-02-10 13:35:47

标签: wpf xaml

我在VS 2012中使用XAML / WPF。我承认我还没有真正理解模板和样式。

我在application.xaml文件中定义了一个样式,如下所示:

<Style x:Key="ContactGroups" TargetType="ListViewItem">
    <!-- Styling omitted here -->
</Style>

现在我想将这个样式应用到我的列表视图中,但我无法弄清楚应用这个样式的位置,即在哪里放置代码来设置样式。我在这里省略了很多属性来缩短时间:

<ListView ItemsSource="{Binding Groups}" SelectedItem="{Binding Path=SelectedGroup, Mode=OneWayToSource}" >
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel />
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid Width="140" Height="25">
                <Grid.RowDefinitions>
                    <RowDefinition Height="2*" />
                </Grid.RowDefinitions>
                <Label Content="{Binding Name}" ToolTip="{Binding Name}" />
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

2 个答案:

答案 0 :(得分:5)

使用StaticResource标记扩展程序在ListBox的ItemContainerStyle上设置样式:

<ListView ItemsSource="{Binding Groups}"
          SelectedItem="{Binding Path=SelectedGroup, Mode=OneWayToSource}"
          ItemContainerStyle="{StaticResource ContactGroups}" >

答案 1 :(得分:1)

我不确定您是否只希望将此样式应用于此列表,但如果不是,您只需从样式中删除x:Key="ContactGroups"即可将其应用于所有列表项。

如果您只想定位此列表视图,则可以选择将样式添加到列表视图的资源中:

    <ListView ItemsSource="{Binding Groups}" SelectedItem="{Binding Path=SelectedGroup, Mode=OneWayToSource}" >
        <ListView.Resources>
            <Style TargetType="ListViewItem">
                <!-- Styling omitted here -->
            </Style>
        </ListView.Resources>
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid Width="140" Height="25">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="2*" />
                    </Grid.RowDefinitions>
                    <Label Content="{Binding Name}" ToolTip="{Binding Name}" />
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

编辑:根据您的评论,这可能是您想采取的方法:

<ListView.Resources>
    <Style TargetType="ListViewItem" BasedOn="{StaticResource ContactGroups}" />
</ListView.Resources>

这样你的风格就会在App.xaml中定义。