2014-02-10 254 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

相關問題