2009-06-11 15 views
7

Siguiendo mi earlier post, ahora trato de vincular la visibilidad de DataGridColumns a una propiedad de notificación de máquina virtual. MSDN sugiere que debería ser capaz de hacer esto con facilidad.Silverlight DataGridTextColumn Vinculación Visibilidad

ya tengo un convertidor de valor y la propiedad de notificación VM que obras (he probado estos en otro elemento en mi página:

<CheckBox x:Name="chkAllTeams" Visibility="{Binding Converter={StaticResource BoolToVisibilityConverter}, Path=AllTeams}"/> 

Esta visibilidad control de casilla de verificación reacciona lo que cabe esperar cuando. he establecido la misma unión en la DataTextColumn me sale un error en la AG_E_BAD_PARSER Visibilidad = línea de XAML:?

<data:DataGridTextColumn 
Visibility="{Binding Converter={StaticResource BoolToVisibilityConverter}, Path=AllTeams}" 
/> 

cualquier idea cualquiera Gracias, Marca

Respuesta

9

La visibilidad en DataGridTextColumn es una bestia diferente en la casilla de verificación. Básicamente, no es una propiedad de dependencia y no puede estar enlazado a datos. Si necesita esta funcionalidad, puede crear una subclase de DataGridTextColumn y agregar su propia propiedad de dependencia para obtener el comportamiento.

  • rectángulo obtiene su propiedad Visibility de UIElement y es una propiedad de dependencia
  • DataGridTextColumn obtiene su visibilidad desde DataGridColumn y no es una propiedad de dependencia.
+0

Ah esto es lo que esperaba :-(Es eso una tarea fácil a la subclase DataGridTextColumn ¿Y usted? ¿Conozco algún ejemplo en línea para eso? Mark –

+1

No conozco ningún ejemplo particular para DataGridTextColumn. El enfoque general sería crear una subclase, agregar una nueva propiedad de dependencia para visibilidad y luego usar la nueva subclase en Datagrid.Columns. tiene una buena explicación de las propiedades de dependencia: http://silverlight.net/blogs/jesseliberty/archive/2008/09/30/dependency-property-system-deeper-dive-part-1.aspx –

+0

Ese enlace está muerto ahora, este es el nuevo: http://jesseliberty.com/2008/09/30/dependency-property-system-%E2%80%93-deeper-dive-part-1/ – Oskar

-1

¿Ha configurado BoolToVisibilityConverter como recurso?

+0

Sip. El ejemplo anterior en la casilla de verificación lo demuestra. –

+0

En realidad, su ejemplo solo muestra la mitad del código ... de todos modos, como otros han dicho, podría no ser su problema. vidalsasoon

-2

Tendrá que utilizar un DataTemplate:

< DataTemplate x: Key = "CBDT" >
< (UIElement AQUÍ) x: Name = "chkAllTeams" Visibilidad = "{Binding = Convertidor {} StaticResource BoolToVisibilityConverter, Path = AllTeams} "/> </DataTemplate >

Como se mencionó antes, sólo UIElement tiene la "visibilidad" propiedad de dependencia.

Para ver un ejemplo de esto en contexto:

http://blogs.msdn.com/scmorris/archive/2008/04/14/defining-silverlight-datagrid-columns-at-runtime.aspx

+2

No es una buena respuesta; esto oculta el * elemento * en la columna, no la * columna * en sí. – slugster

Cuestiones relacionadas