2012-06-19 12 views
5

Tôi đang cố gắng để thực hiện XamDataGrid cột visibilty trong một kiến ​​trúc MVVM và nó không có vẻ là làm việc.XamDataGrid cột visibilty không hoạt động bằng cách sử dụng MVVM

Tôi đang làm như sau:

Thêm sở hữu độ hiển thị cho một lĩnh vực không ràng buộc -

<igDP:UnboundField Name="gridCustomerId" 
        Label="ID" 
        Binding="{Binding customerid, 
            Mode=TwoWay, 
            UpdateSourceTrigger=PropertyChanged}" 
        Visibility="{Binding ShowCustomerIDColumn, 
             Mode=TwoWay, 
             UpdateSourceTrigger=PropertyChanged}"> 

Trong Xem các mẫu của tôi, thêm một proerty kiểu Tầm nhìn:

//ToShow CustomerID Column 
private Visibility showCustomerIDColumn; 
public Visibility ShowCustomerIDColumn 
{ 
    get 
    { 
     return showCustomerIDColumn; 
    } 

    set 
    { 
     showCustomerIDColumn=value; 
     InvokePropertyChanged("ShowCustomerIDColumn"); 
    }  
} 

Sau đó, trong trình xử lý lệnh bằng cách sử dụng mã sau:

if(ShowCustomerIDColumn == Visibility.Hidden) 
    ShowCustomerIDColumn = Visibility.Visible; 
else 
    ShowCustomerIDColumn = Visibility.Hidden; 

InvokePropertyChanged("ShowCustomerIDColumn"); 

Bất kỳ ai có giải pháp?

Chúc mừng, Anshuman

Trả lời

3

Tôi không nghĩ rằng UnboundField là một phần của cây yếu tố nên bạn không thể ràng buộc tài sản của mình như bình thường. Josh Smith đã viết một bài đăng trên blog về việc ràng buộc nó với các Trường tại số http://blogs.infragistics.com/blogs/josh_smith/archive/2008/06/06/binding-a-xamdatagrid-field-property.aspx.

+0

Cảm ơn Hoàng. Tôi không thích phương pháp này, nhưng nó hoạt động như một sự quyến rũ !!! – Anshuman

+0

không chắc chắn nếu đó là lý do. Nó có thể là tương đối ở đâu đó nhưng không phải là lý do chính xác. Có các thuộc tính khác trong các trường Unbound có thể bị ràng buộc vào một thuộc tính. –

1

Lý do chính tại sao khả năng hiển thị không hoạt động ở đây gây ra Mức độ hiển thị không phải là thuộc tính phụ thuộc trong Lớp Lớp (lớp UnboundField bắt nguồn từ Lớp trường) không giống như các thuộc tính khác.

Xem hữu tầm nhìn

See visibility property

Xem Label/rowspan tài sản có hỗ trợ ràng buộc

See Label Property that support binding

Bạn cần phải thiết lập khả năng hiển thị trong C# mã (hoặc trong một số hành vi hoặc mã ind event):

fieldlayout.Fields[node.Name].Visibility = node.Visibility ? Visibility.Visible : Visibility.Collapsed; 
+0

mã chính xác hơn để truy cập: 'myXamDataGrid.FieldLayouts [0] .Fields [" myFieldName "]. Visibility = myVisibility' (lưu ý: đôi khi chỉ mục có thể khác 0; chú thích 2: bạn đã xác định thuộc tính' Tên' cho (Unound) Field) – Beauty

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