2012-09-14 27 views
6

Tôi đang cố gắng tạo một mẫu nút đơn giản, trong đó nút thường trông giống như một đường ngang duy nhất, nhưng khi được kết nối lại, nút sẽ hiển thị màu "hình chữ nhật" được tô màu phía sau nó. Đây là mã tôi có, nhưng tôi dường như không thể kích hoạt được những thứ gây ra.Làm cách nào để thêm nút vào thanh phụ đề WPF khi sử dụng chrome cửa sổ tùy chỉnh?

<Window x:Class="TestStylingWPF.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <WindowChrome.WindowChrome> 
     <WindowChrome CaptionHeight="36" GlassFrameThickness="0 0 0 1" ResizeBorderThickness="5" /> 
    </WindowChrome.WindowChrome> 

    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="36" /> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 

     <Button Height="36" Width="36" 
        HorizontalAlignment="Center" VerticalAlignment="Center" 
       Grid.Row="0"> 
      <Button.Template> 
       <ControlTemplate> 
        <Grid> 
         <Rectangle x:Name="PART_ButtonBackgroundRectangle" Fill="LightGray" Width="36" Height="36" Opacity="0" /> 
         <Path x:Name="PART_ButtonPath" Data="M10,26 L26,26" Stroke="DarkGray" StrokeThickness="1.5" /> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger SourceName="PART_ButtonBackgroundRectangle" Property="IsMouseOver" Value="True"> 
          <Setter TargetName="PART_ButtonBackgroundRectangle" Property="Opacity" Value="1" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Button.Template> 
     </Button> 
    </Grid> 
</Window> 

Có ai biết tại sao trình kích hoạt của tôi không hoạt động hay có lẽ cách tốt hơn để làm điều này? Tôi là loại mới để WPF và muốn refactor này ra (để sử dụng nó trong nhiều nút), nhưng tôi không chắc chắn như thế nào.

Cập nhật: Ok, vì vậy tôi đoán có vẻ như là do nút nằm trong thanh phụ đề của cửa sổ. Có cách nào tốt cho việc này không? Có lẽ một cách để đặt ưu tiên nhấp/di chuột vào nút?

+1

trình tốt cho tôi –

+1

được sao chép vào một dự án WPF trống mã của bạn hoạt động tốt. Vì vậy, vấn đề của bạn nằm ở một nơi khác ... – nemesv

+0

Cập nhật câu trả lời và mã của tôi với một số thông tin mới. –

Trả lời

14

Bạn cần phải thiết lập hitTest hữu hình của nút bấm của bạn, chẳng hạn như:

shell:WindowChrome.IsHitTestVisibleInChrome="True" 
+0

Cảm ơn bạn, điều đó đã hoạt động hoàn hảo. –

+0

@ChrisCovert Nhưng làm cách nào? Trong một dự án 4.5.2, nếu tôi thêm một tham chiếu đến 'xmlns: shell =" clr-namespace: Microsoft.Windows.Shell; assembly = Microsoft.Windows.Shell "' và cố gắng thiết lập thuộc tính 'shell: WindowChrome.IsHitTestVisibleInChrome = "True" 'trên các nút của tôi, tôi nhận được lỗi *" Tên "WindowChrome" không tồn tại trong không gian tên "http://schemas.microsoft.com/winfx/2006/xaml/presentation/shell""* –

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