2012-06-19 7 views
6

Mam następującą budowę:Bind mienia w zagnieżdżonych klasy statycznej

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

Chcę powiązać to do przycisku w usercontrol.

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

(gdzie ns wskazuje na zespół i przestrzeń nazw, w której zdefiniowano "Stałe").
Te wyniki w dwóch błędów:

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

Próbowałem również:

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

Powoduje jednego błędu:

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

Czy jest możliwe, aby wiązać się z własności statyczne w miłym klasa statyczna w klasie statycznej? Jeśli tak, w jaki sposób?

+0

Will ty również zawierać nazw zanim tu 'Stałe + Foo.Bar'? jak '[przestrzeń nazw] .Constants + Foo.Bar' – V4Vendetta

+0

nie, ale nie sądzę, że jest to potrzebne (resharper usuwa przestrzeń nazw). Testowanie 1, 2 ...: dodanie go nie pomaga, ten sam błąd ("nie został znaleziony"), ale teraz zawiera przestrzeń nazw. –

+1

Działałoby, gdybyś mógł zmienić 'publiczne staty stałe statyczne' na' Stałe nazw stałych '. Czy to jest opcja? – Clemens

Odpowiedz

8

to działa na mnie

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

lokalny jest

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

Masz rację, ale z jakiegoś dziwnego powodu nie działa to w projektancie XAML (VS2010). – Clemens

+0

Tak. Oooo. Nie uruchomiłem projektu, ponieważ widok projektu XAML zawiera błędy. Ale to * działa *, masz rację. Myślę, że pozostanę przy rozwiązaniu przestrzeni nazw, jak sugeruje Clemens, ponieważ niedziałający projektant jest niedopuszczalny podczas programowania. –

+0

tylko podpowiedź, że projektant VS2010 i Blend nie działają w ten sam sposób;) – blindmeis

Powiązane problemy