2010-09-09 26 views
7

Tôi có một số MenuItem tạo các mục menu phụ linh hoạt từ ItemsSource -property.Phong cách quang học WPF của MenuItem-Separator được tạo động trong MVVM

Để nhóm, tôi có Dấu phân tách trong trình đơn. Dấu phân tách được tạo cho mỗi mục nhập rỗng trong bộ sưu tập ItemsSource bởi một ControlTemplate của MenuItem.ItemContainerStyle.

Tính năng này hoạt động tốt, tuy nhiên có dấu phân tách không giống kiểu quang học như các dải phân cách khác được đặt trong bộ sưu tập Các mục của menu.

Có cách nào để thay đổi giao diện của dấu tách sao cho nó trông giống với trình tách phân tách mục menu "bình thường" không?

Đây là mã tôi sử dụng:

<MenuItem.ItemContainerStyle> 
    <Style TargetType="MenuItem"> 
    <Setter Property="Header" Value="{Binding Title}"/> 
    <Setter Property="Command" Value="{Binding Command}"/> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding }" Value="{x:Null}"> 
      <Setter Property="Template" > 
       <Setter.Value> 
        <ControlTemplate> 
         <Separator /> <!-- THIS SEPARATOR IS NOT SHOWN AS COMMON MENUITEM-SEPARATORS ARE --> 
        </ControlTemplate>           
       </Setter.Value> 
      </Setter> 
     </DataTrigger>        
    </Style.Triggers> 
    </Style> 
</MenuItem.ItemContainerStyle> 

Trả lời

15

Có một phong cách mà được khai báo trong System.Resources với MenuItem.SeparatorStyleKey như chìa khóa. Phụ huynh MenuItem thường đặt phong cách đối với trẻ em kiểu Separator, nhưng kể từ khi bạn là một MenuItem, nó sẽ không, vì vậy bạn sẽ phải làm điều đó bằng tay:

<Separator Style="{StaticResource {x:Static MenuItem.SeparatorStyleKey}}" /> 

Bạn cũng có thể muốn đọc blog của Bea Stollnitz của nhập "How do I insert Separator objects in a data bound MenuItem?" để có cách tiếp cận khác.

0

Hãy thử gói các Seperator trong một MenuItem

<ControlTemplate> 
    <MenuItem> 
    <MenuItem.Header> 
     <Separator /> 
    </MenuItem.Header> 
    </MenuItem> 
</ControlTemplate> 
+0

Cảm ơn câu trả lời. Đó là một ý tưởng hay nhưng đáng buồn là nó không giúp ích gì. Dấu phân cách trông giống nhau nhưng có con như một MenuItem bổ sung có thể chọn được (điều làm cho dấu phân tách có thể lựa chọn ở cuối, nếu không bị vô hiệu hóa). – HCL