2014-02-10 169 views
3

我正在使用VS 2012中的XAML/WPF。我承认我不太了解模板和样式。将样式从资源应用到ListView.ItemContainerStyle

我已经在我的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> 

回答

4

使用StaticResource标记扩展设置样式上的ListBox ItemContainerStyle

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

运行和编译没有错误,但我的风格没有得到应用。我真的很困惑,如何可能。当获取正在使用的颜色的十六进制并在我的XAML(或整个应用程序)中搜索它们时,颜色不会出现在任何地方。我怀疑你的回答是正确的,我还有其他问题。 – HK1

+0

是的,你发布的问题。这是你实现它的方式。不知道你的其他问题。 –

+0

考虑打开另一个问题,其中包含您的风格的详细信息,以便可以让更多人查看。 –

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中定义。

+0

谢谢,我认为这可能实际上指向我的正确的方向。我想知道是否有另一个“全局”风格被应用到我的列表中,导致我在上面评论中提到的问题。感谢您使用本地资源的建议。我实际上是试图将我的样式从xaml窗口移出,因为窗口变得太复杂并且难以阅读。 – HK1

+0

Oic。在这种情况下,我可以选择另外一种选择。我会在上面添加它。 – TrueEddie

相关问题