我正在尋找修改WPF ListView,以便項目水平呈現,並且第一個項目和所有後續項目之間有一個分隔符。像這樣:如何覆蓋ListView的ContentTemplate以添加垂直分隔符?
我已經得到了水平位,但我堅持使用分隔符。我嘗試使用DataTemplate,但這將分隔符合併到實際項目中,這意味着當我懸停時它會突出顯示(注意我使用Caliburn,但我不認爲它會影響很多問題):
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</UserControl.Resources>
<StackPanel Margin="20">
<ListView Name="Items" BorderThickness="0">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<ContentControl cal:View.Model="{Binding}" />
<Border Name="Separator" Width="2" Margin="5,10" HorizontalAlignment="Center" Background="Red" Visibility="{Binding IsFirst, Converter={StaticResource BooleanToVisibilityConverter}}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</StackPanel>
的項目是這個邊界非常基本的觀點:
<Border Background="White" BorderBrush="Black" BorderThickness="2">
如何,它看起來與的DataTemplate:
spendi後納克早上模板上讀了,我決定一個控件模板是其經過鬥爭給了我這個代碼的解決方案:
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<StackPanel Margin="10" Orientation="Horizontal">
<ContentPresenter Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" />
<Border Name="Separator" Width="2" Margin="5,10" HorizontalAlignment="Center" Background="Red" Visibility="{Binding IsFirst, Converter={StaticResource BooleanToVisibilityConverter}}" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<StackPanel>
<ListView Name="Items">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</StackPanel>
這看起來幾乎是相同的,但現在我不能強調出於某種原因項目。我想也許我也重寫了觸發器,並嘗試添加基於此答案的ControlTemplate.Triggers條目:Change selection-color of WPF ListViewItem,以突出顯示行爲,但沒有成功。
我如何獲得我正在查找的結果,並且ControlTemplate是進行此更改的正確位置?
編輯:理想情況下,我正在尋找一個解決方案,只使用xaml。
該分隔符相對於「ListViewItem」本身而言不是容器的一部分。您現在正在使用水平「StackPanel」,試着編寫自己的'HorizontalPanelWithSeparator'。 – Sinatr
我會放棄它,謝謝。 – Jamey