2010-10-26 32 views
7

Tôi nhận thấy rằng lề hoặc chiều cao của Dấu phân cách mặc định vì nó được tạo kiểu trong các menu trong WPF có vẻ hơi lớn hơn một số ứng dụng khác như Visual Studio 2010. Tôi biết rằng các Dấu phân cách này có thể được tái biểu mẫu bằng áp dụng một phong cách mới với một ControlTemplate tùy chỉnh nhưng như mọi khi tôi đang tìm kiếm bất kỳ cách nào có thể để thay đổi điều này mà không cần phải tự xác định lại thành phần của điều khiển.Bất kỳ cách nào để tạo một Dấu phân cách trong trình đơn WPF hẹp hơn?

Nếu những gì tôi yêu cầu là không thể, tôi sẽ chấp nhận câu trả lời nếu ai đó có thể cung cấp giải thích có thẩm quyền và toàn diện. Ngoài ra tôi muốn nhấn mạnh rằng tôi không quan tâm đến một bài giảng về làm thế nào để xác định lại ControlTemplate như tôi đang điều trị đó như là phương sách cuối cùng và tôi đã biết làm thế nào để thực hiện điều này.

+0

Bạn đã bao giờ tìm hiểu cách thực hiện việc này chưa? Nó cũng làm tôi khó chịu. –

+0

Chưa, tôi chắc chắn sẽ cập nhật bài đăng của tôi nếu tôi làm vậy. – jpierson

Trả lời

12

Phong cách cho aero.normalcolor MenuItem tách trông như thế này:

<Style x:Key="{x:Static MenuItem.SeparatorStyleKey}" 
     TargetType="{x:Type Separator}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Separator}"> 
       <Grid SnapsToDevicePixels="true" Margin="0,6,0,4"> 
        <Rectangle Height="1" 
           Margin="30,0,1,1" 
           Fill="#E0E0E0"/> 
        <Rectangle Height="1" 
           Margin="30,1,1,0" 
           Fill="White"/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Bạn sẽ cần phải sao chép phong cách này để App.xaml của bạn và thay đổi Margin="0,6,0,4" để phù hợp với sở thích của bạn.

+0

Đây có lẽ là giải pháp có thể chấp nhận được nhất và cách tiêu chuẩn nhất để thay đổi sự xuất hiện của bất kỳ kiểm soát nào ngoài những đòn bẩy được cung cấp thông qua các thuộc tính tiếp xúc để tôi chấp nhận nó. Trong trường hợp của tôi, tôi nhúng các điều khiển WPF vào một ứng dụng WinForms thông qua việc sử dụng ElementHost để khái niệm app.xaml không áp dụng. Cũng như một lưu ý khác, một cách mà tôi tìm thấy xung quanh điều này mà không sửa đổi mẫu điều khiển cơ bản về cơ bản là đặt lề âm trên chính điều khiển tách hoặc thông qua một kiểu. – jpierson

1

Tôi luôn sử dụng lề âm: <Separator Margin="0,-4" />.

Các vấn đề liên quan