2010-08-30 23 views
9

Tôi muốn liên kết với tài nguyên (DynamicResource) và thuộc tính truy cập trên tài nguyên đó, nhưng có cách nào để thực hiện điều đó không?Cách liên kết với tài nguyên động và chỉ định đường dẫn

(Tôi muốn để hình dung các giá trị mặc định từ nhà xây dựng trong trình soạn thảo XAML trong visual studio. Những người không thể được nhìn thấy khi tham khảo một đối tượng thông qua DataContext cũng không thông qua một tài sản gia tăng đối với lớp Window của tôi ...)

XAML không làm việc: (công trình nhà soạn nhạc nhưng không phải ở thời gian chạy ...)

<Window ... > 
    <Window.Resources> 
     <local:MyClass x:Key="myResource" /> 
    </Window.Resources> 
    <StackPanel> 
     <Button Content="{Binding Source={DynamicResource myResource} Path=Property1}" /> 
     <Button Content="{Binding Source={DynamicResource myResource} Path=Property2}" /> 
    </StackPanel> 
</Window> 

với lớp (mà có lẽ cần phải thực hiện INotifyPropertyChanged):

public class MyClass 
{ 
    public MyClass() 
    { 
     this.Property1 = "Ok"; 
     this.Property2 = "Cancel"; 
    } 
    public string Property1 { get; set; } 
    public string Property2 { get; set; } 
} 

Trả lời

19

Đó là vì tiện ích đánh dấu DynamicResource chỉ có thể được sử dụng trên thuộc tính phụ thuộc, vì nó sẽ cần phải cập nhật nó nếu tài nguyên thay đổi. Và Binding.Source không phải là một tài sản phụ thuộc ...

Là một khắc phục, bạn có thể thiết lập các DataContext của nút với DynamicResource:

<Button DataContext="{DynamicResource myResource}" Content="{Binding Path=Property1}" /> 
<Button DataContext="{DynamicResource myResource}" Content="{Binding Path=Property2}" /> 
+1

+1, điều này có vẻ là một công việc làm sạch xung quanh và tôi đã làm điều này để có hiệu lực tốt – marr75

+1

Đừng quên chấp nhận câu trả lời sau đó;) –

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