2011-09-14 23 views
5

Kịch bản:Làm thế nào để sử dụng một accesskey trên một nút WPF với một ContentTemplate tùy chỉnh?

Hiện nay tôi có mã này XAML:

<Button Content="_Cancel" IsCancel="True" Command="{Binding Path=CancelCommand}" Margin="5"> 
    <Button.ContentTemplate> 
     <DataTemplate> 
     <TextBlock Margin="10,0,10,0" /> 
     </DataTemplate> 
    </Button.ContentTemplate> 
</Button> 

Rõ ràng là accesskey (các 'c' chìa khóa: _cancel) không hoạt động kết hợp với các TextBlock. Tôi thực sự nghĩ rằng TextBlock nên là một ContentPresenter (bên dưới), nhưng điều này làm hỏng dụ Visual Studio 2010 của tôi mỗi lần.

<ContentPresenter Margin="10,0,10,0" RecognizesAccessKey="True" /> 

Câu hỏi:

  • giải pháp tốt nhất để sử dụng accesskeys trên một nút với một ContentTemplate WPF là gì?

Xin cảm ơn trước!

Trả lời

8

Thay vì sử dụng TextBlockAccessText như sau:

<Button Content="_Cancel" IsCancel="True" Command="{Binding Path=CancelCommand}" Margin="5"> 
    <Button.ContentTemplate> 
     <DataTemplate> 
     <AccessText Margin="10,0,10,0" Text="{Binding}"/> 
     </DataTemplate> 
    </Button.ContentTemplate> 
</Button> 

PS. ContentPresenter nên được sử dụng bên trong một ControlTemplate để hiển thị nội dung theo số DataTemplate. Nếu bạn sử dụng nó trong một DataTemplate, nó sẽ gây ra đệ quy vô hạn khi số DataTemplate được gọi lặp đi lặp lại.

+0

Tuyệt vời, nhanh chóng và hoạt động! Cảm ơn! –

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