2012-01-04 22 views
1

這是設計我需要實現如何使用這些分隔符創建項目控件派生項?

enter image description here

基本上,這是用豎線分隔的菜單項。 我使用PRISM和整個酒吧基本上是ItemsControl,我以這樣的方式,它會自動除最後一個所有項目後插入欄注菜單項

我不知道是否有可能風格(無需編寫代碼)的ItemsControl ?

如果我不想跳過最後一個垂直條,那不會有什麼大不了的。

重要!我不能手動插入分隔符,因爲從不同模塊(PRISM)插入的菜單項和我從來不知道哪一個是最後一個,所以我需要在容器級別解決這個問題。

回答

2

這可以使用Clip和RectangleGeometry完成。通過在您的數據模板左側插入管道,設置一個矩形剪輯以剪掉第一個管道。有點哈克,你可能不得不哄騙剪輯開始讓它看起來不錯,但這裏有一個工作示例:

<ItemsControl xmlns:sys="clr-namespace:System;assembly=mscorlib"> 
    <sys:String>No</sys:String> 
    <sys:String>Pipe</sys:String> 
    <sys:String>On</sys:String> 
    <sys:String>First</sys:String> 
    <sys:String>Item</sys:String> 
    <ItemsControl.Clip> 
     <RectangleGeometry Rect="5,0,1000,10000" /> 
    </ItemsControl.Clip> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal"></StackPanel> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="|" /> 
       <TextBlock Text="{Binding}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
0

您可以在ItemsControl的ItemsTemplate中指定垂直條。

+0

但它會爲每個項目。我需要它之間的項目 – katit 2012-01-04 20:06:15

+0

只要把它放在模板的右邊(或左邊)。 terphi舉了一個例子。 – 2012-01-04 22:52:53