2012-06-19 18 views
5

Estoy tratando de implementar la visibilidad de la columna XamDataGrid en una arquitectura MVVM y parece que no funciona.La visibilidad de la columna XamDataGrid no funciona con MVVM

que estoy haciendo lo siguiente:

Adición de propiedad VISIBILIDAD para un campo no unido -

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

en mi opinión, Modelo, la adición de un proerty de tipo Visibilidad:

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

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

Entonces en el controlador de comando utilizando el siguiente código:

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

InvokePropertyChanged("ShowCustomerIDColumn"); 

¿Alguien con una solución?

Saludos, Anshuman

Respuesta

3

No creo que la UnboundField es parte del árbol de elementos por lo que no puede unirse a su propiedad como lo haría normalmente. Josh Smith escribió una publicación en un blog sobre cómo enlazarla a The Fields al http://blogs.infragistics.com/blogs/josh_smith/archive/2008/06/06/binding-a-xamdatagrid-field-property.aspx.

+0

Gracias Hoang. ¡No me gustó el método, pero funciona como un encanto! – Anshuman

+0

no estoy seguro de si ese es el motivo. Puede ser relativo en alguna parte pero no en la razón exacta. Hay otra propiedad en los campos de Unbound que podría estar vinculada a una propiedad. –

1

La razón principal por la que la visibilidad no funciona aquí causa La visibilidad no es una propiedad de dependencia en la clase Campos (la clase UnboundField se deriva de la clase Field) a diferencia de otras propiedades.

Ver propiedad de visibilidad

See visibility property

Ver Etiqueta/RowSpan Propiedad que admite el enlace

See Label Property that support binding

Es necesario configurar la visibilidad en código C# (ya sea en algún comportamiento o código beh ind evento):

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

código de acceso más preciso: 'myXamDataGrid.FieldLayouts [0] .Fields [" myFieldName "]. Visibility = myVisibility' (nota: a veces el índice puede ser diferente de 0; nota 2: tiene que definir la propiedad' Name' para el campo (Unound) – Beauty

Cuestiones relacionadas