アイテムが水平にレンダリングされ、最初のアイテムとすべての後続アイテムの間にセパレータがあるように、WPF ListViewを変更したいと考えています。このようなもの:ListViewのContentTemplateをオーバーライドして縦型セパレータを追加するにはどうすればよいですか?
私は水平なビットを持っていますが、私は区切り線でつかまっています。私はDataTemplateを使用しようとしましたが、実際の項目にセパレータが組み込まれているので、カーソルを置いたときに強調表示されます(キャリバーを使用していますが、質問に多くの影響を与えるとは思われません)。
<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後
アイテムは、この境界線を持つ非常に基本的な図であり、テンプレート上に読んで朝ngの、私はControlTemplateのは、闘争の後に私にこのコードを与えたソリューションであると判断しました:
<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ですか?
EDIT:理想的には、xamlだけを使用したソリューションを探しています。
セパレータは、ListViewItem自体よりもアイテムのコンテナの一部です。水平StackPanelを使用しています。自分自身の 'HorizontalPanelWithSeparator'を書き込もうとします。 – Sinatr
私はそれを行ってくれます、ありがとうございます。 – Jamey