2012-06-19 20 views
6

tengo la siguiente construcción:Enlazar a la propiedad en una clase estática anidada

public static class Constants { 
    public static class Foo { 
    public static string Bar { 
     get { 
     //Constants.Foo.Bar == "FooBar" 
     return "FooBar"; 
     } 
    } 
    } 
} 

quiero obligar a un botón en un control de usuario.

<Button Content="{Binding Source={x:Static ns:Constants.Foo.Bar}}" /> 

(donde ns apunta al ensamblaje y espacio de nombres donde se define "Constantes").
esta manera hay dos errores:

  • "Cannot find the type 'Constants.Foo'. Note that type names are case sensitive."
  • "Type 'ns:Constants.Foo' was not found."

También probé:

<Button Content="{Binding Source={x:Static ns:Constants+Foo.Bar}}" /> 

Esto se traduce en un error:

  • "Type 'ns:Constants+Foo' was not found."

IS es posible enlazar a una propiedad estática en una clase estática en una clase estática? Si es así, ¿cómo?

+0

Will se incluya también el espacio de nombres antes de que aquí 'Constantes + Foo.Bar'? como '[namespace] .Constants + Foo.Bar' – V4Vendetta

+0

no, pero no creo que sea necesario (resharper elimina el espacio de nombres). Prueba 1, 2 ...: agregar no ayuda, el mismo error ("no se encontró"), pero ahora incluye el espacio de nombres. –

+1

Funcionaría si pudieras cambiar 'constantes de clase estáticas públicas' a' constantes de espacio de nombres'. ¿Es eso una opción? – Clemens

Respuesta

8

esto funciona para mí

<Button Content="{Binding Source={x:Static local:Constants+Foo.Bar}}" /> 

local es

xmlns:local="clr-namespace:WpfTestApp1" 
+0

Tiene razón, pero por alguna extraña razón no funciona en el diseñador de XAML (VS2010). – Clemens

+0

Sí. Ay. Realmente no ejecuté el proyecto, porque la vista de diseño de XAML da errores. Pero * funciona *, tienes razón. Creo que me atendré a la solución del espacio de nombres, como lo sugiere Clemens, porque un diseñador que no funciona no es aceptable durante el desarrollo. –

+0

solo una pista, el diseñador de VS2010 y Blend no funcionan de la misma manera;) – blindmeis

Cuestiones relacionadas