2015-03-02 10 views
10

Tôi đang tạo kiểu nút dựa trên việc chuyển đổi bàn chải màu thành bóng tối hơn để tạo bóng. Trong XAML thông thường, tôi có một công cụ chuyển đổi so với tôi sử dụng trên các ràng buộc mà hoạt động hoàn hảo:Có thể sử dụng trình chuyển đổi trên một TemplateBinding trong XAML không?

BorderBrush="{Binding Background, Converter={StaticResource ColourBrushToDarker}}" 

Nhưng tôi không thể chuyển đổi để làm việc với TemplateBinding trong một định nghĩa phong cách. Là có một cách? Visual Studio chỉ không cho phép một trình chuyển đổi trên một TemplateBinding.

Tôi đã thử những điều sau đây không có may mắn:

Background="{Binding Converter={StaticResource ColourBrushToDarker}, ConverterParameter={Binding Path=Background}}"/> 

(Và tôi đã thử các dòng trên với TemplateBinding thay thế Binding cũng như một số lần lặp khác)

này có thể được thực hiện? Một thứ khác mà tôi nghĩ đến là viết mã một thuộc tính trong C# để thực hiện chuyển đổi, nhưng một kiểu không có mã phía sau tệp.

Kết quả sau khi tôi có thể tạo một bàn chải mới có bóng tối hơn thuộc tính Nền để nút luôn có bóng tối hơn một chút so với màu nền chính của nó.

Trả lời

21

Sau khi một số (tẻ nhạt) thử và sai Tôi đã tìm thấy một giải pháp:

Background="{Binding Background, RelativeSource={RelativeSource Mode=TemplatedParent}, Converter={StaticResource ColourBrushToDarker}}" 

tôi vẫn đang học phong cách XAML, nhưng tôi nghĩ rằng những gì đang xảy ra ở đây là tôi có thể sử dụng Binding như thể nó là TemplateBinding bằng cách thiết lập nguồn tương đối cho mẫu cha. Vì tôi đang sử dụng Binding (không phải là TemplateBinding), tôi có thể thêm một trình chuyển đổi và nhận được kết quả mong muốn.

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