2009-02-20 41 views
6

nút Thêm phương thức nhấp chuột này sẽ khởi chạy một cửa sổ gọi là "(AssemblyName) .Reports" khi một nút với nội dung "Báo cáo" được nhấp:Làm cách nào để thêm các thuộc tính bổ sung vào các phần tử XAML chuẩn?

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    Button button = (Button)e.OriginalSource; 
    Type type = this.GetType(); 
    Assembly assembly = type.Assembly; 
    Window window = (Window)assembly.CreateInstance(String.Format("{0}.{1}", type.Namespace, button.Content)); 
    window.ShowDialog(); 
} 

Nhưng tôi muốn các giá trị thuộc tính nội dung của các nút để có thể thay đổi , ví dụ nó có thể thay đổi thành "Báo cáo chứng khoán" nhưng tôi vẫn muốn nhấp vào nút để khởi chạy "(assemblyname) .Reports".

Có cách nào để thêm thuộc tính vào thẻ nút hay không, ví dụ: "TheWindowFileName"?

<Button x:Name="btnReports" Content="Stock Reports" TheWindowFileName="Reports"/> 

Nếu không, làm cách nào để thêm thông tin bổ sung vào các phần tử nút mà tôi có thể đọc và xử lý theo mã?

Trả lời

10

Chắc chắn bạn có thể sử dụng attached properties thêm các thuộc tính thêm vào các yếu tố XAML, nhưng đối với những gì bạn cần, bạn có thể có thể chỉ cần sử dụng Tag tài sản hiện có:

<Button x:Name="btnReports" Content="Stock Reports" Tag="Reports"/> 
+0

rất thú vị, hoạt động tốt cho những gì tôi cần, có thể thêm nhiều hơn một trong số những thứ này không? trang MSDN này không rõ ràng về nó: http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.tag.aspx –

+0

Không, Thẻ là tài sản giống như Chiều rộng hoặc Nội dung - nó chỉ có thể được sử dụng một lần. Để thêm của riêng bạn, hãy làm theo các liên kết thuộc tính đính kèm. –

1

Sử dụng tài sản Kèm theo đây có thể là một quá mức cần thiết nhưng thay vào đó bạn có thể cố gắng đóng gói hành vi nút của bạn trong một Command và chuyển dữ liệu bạn muốn sử dụng trong lệnh dưới dạng CommandParameter. Điều đó sẽ làm các trick.

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