Bạn cần chỉ định trình kích hoạt làm một phần của kiểu - bộ sưu tập Trình kích hoạt trên nút chính nó chỉ có thể chứa trình kích hoạt sự kiện. Với ý nghĩ đó, một DataTrigger hoạt động tốt. Tuy nhiên, có một nếp nhăn: giá trị từ Trigger Setter sẽ không ghi đè lên một thuộc tính Nội dung cục bộ. Vì vậy, bạn cũng phải đặt Nội dung mặc định trong Kiểu. Dưới đây là cách hiển thị:
<Button> <!-- Note no content set directly on button -->
<Button.Style>
<Style TargetType="Button">
<Setter Property="Content" Value="You may write!!!" /> <!-- Here is the 'normal' content -->
<Style.Triggers>
<!-- Here is how we bind to another control's property -->
<DataTrigger Binding="{Binding IsReadOnly, ElementName=textBox}" Value="True">
<Setter Property="Content" Value="NO NO NO" /> <!-- Here is the 'override' content -->
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Ah ha! Tôi biết có một quyền ưu tiên tài sản, nhưng nó không xảy ra với tôi mà trực tiếp sẽ ghi đè hành động Trigger. Tôi đang sử dụng DP làm nguồn ràng buộc và kết thúc bằng việc thiếu hành vi tương tự như cố gắng sử dụng ElementName, do đó, vấn đề thực sự là với độ ưu tiên của thuộc tính. Cảm ơn bạn đã xóa thông tin đó! – rrhartjr
điều này rất hay. chỉ cần những gì tôi cần, tôi đã gần như sẽ viết mã cho một công cụ chuyển đổi. nhưng điều này đẹp hơn. – user1841243
> Tuy nhiên, có một nếp nhăn: giá trị từ Trigger Setter sẽ không ghi đè lên một thuộc tính Nội dung cục bộ. Điều này quan trọng! Tôi đã bỏ lỡ lần đầu tiên tôi đọc câu trả lời này. – SteveP