2012-06-19 9 views
5

Próbuję zaimplementować widoczność kolumn XamDataGrid w architekturze MVVM i wydaje się, że nie działa.Wizualizacja kolumn XamDataGrid nie działa przy użyciu MVVM

robię co następuje:

Dodawanie własności to widoczności dla niezwiązanego pola -

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

moim zdaniem model, dodając proerty typu Widoczność:

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

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

Następnie w module obsługi komend za pomocą następującego kodu:

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

InvokePropertyChanged("ShowCustomerIDColumn"); 

Ktoś z rozwiązaniem?

Cheers, Anshuman

Odpowiedz

3

Nie sądzę UnboundField jest częścią drzewa elementów, więc nie można powiązać swoją własność jak zwykle. Josh Smith napisał post na blogu o powiązaniu go z Fields pod numerem http://blogs.infragistics.com/blogs/josh_smith/archive/2008/06/06/binding-a-xamdatagrid-field-property.aspx.

+0

Dzięki Hoang. Nie podobała mi się ta metoda, ale działa jak urok !!! – Anshuman

+0

Nie jestem pewien, czy to jest powód. Może być gdzieś względnie, ale nie z dokładnego powodu. Istnieją inne właściwości w polach Bez ograniczeń, które można powiązać z usługą. . –

1

Głównym powodem widoczność nie działa tutaj przyczyna widoczność nie jest właściwość zależność w dziedzinach klasa (UnboundField klasa pochodzi od klasy ostrości) odróżnieniu od innych właściwości.

See nieruchomość widoczność

See visibility property

See Label/rowspan nieruchomości, które obsługują wiążące

See Label Property that support binding

Musisz ustawić widoczność w kodzie C# (albo w niektórych zachowaniach lub zachowaniu kodu zdarzenie ind):

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

bardziej precyzyjny kod dostępu: 'myXamDataGrid.FieldLayouts [0] same pola [ "myFieldName"] Widoczność = myVisibility' (uwaga: czasami indeks może inna niż 0; Uwaga 2: trzeba zdefiniować właściwość name' dla' pole (Unound)) – Beauty