2013-04-25 7 views
8

Nadal uczę się wiązania w trybie WPF i od pewnego czasu borykam się z tym problemem. Mam sklep enum wewnątrz ViewModel tak:Podaj wartość wyliczenia jako parametr CommandParameter, gdy wyliczenie jest w obiekcie ViewModel

namespace theNamespace 
{ 
    public class frmSetupViewModel 
    { 
     public enum LocationLabelType {Location, Sample} 
     ... 
    } 
} 

I chciałbym mieć przycisk przejść jedną z wartości poprzez CommandParameter ale nie można dowiedzieć się, jak zmusić go do pracy. Jak dotąd są to kombinacje próbowałem:

//When value is inside the frmSetupViewModel, these do not work 
CommandParameter="{x:Static local:LocationLabelType.Location}" //'Type was not found.' 
CommandParameter="{x:Static local:frmSetupViewModel+LocationLabelType.Location}" //'Type was not found.' 
CommandParameter="{x:Static local:frmSetupViewModel.LocationLabelType.Location}" //'Type was not found.' 

CommandParameter="{Binding {x:Static local:LocationLabelType.Location}}" //'Value cannot be null' 
CommandParameter="{Binding {x:Static local:frmSetupViewModel+LocationLabelType.Location}}" //'Value cannot be null' 
CommandParameter="{Binding {x:Static local:frmSetupViewModel.LocationLabelType.Location}}" //'Value cannot be null' 

Ale jeśli przeniosę enum POZA VM i do przestrzeni nazw, takich jak ten:

namespace theNamespace 
{ 
    public enum LocationLabelType {Location, Sample} 

    public class frmSetupViewModel 
    { 
     ... 
    } 
} 

to działa dobrze:

//Works when enum is moved to Namespace 
CommandParameter="{x:Static local:LocationLabelType.Location}" 

Zakładam, że brakuje czegoś z moim CommandParameter?

VM jest ładowany poprzez DataContext:

<Window.DataContext> 
    <local:frmSetupViewModel /> 
</Window.DataContext> 

Dzięki.

Odpowiedz

2

Ten drobny praca:

CommandParameter="{x:Static uiTest:MainWindow+LocationLabelType.Location}" 

Uruchomiono projekt z tym kodem? Projektant WPF może wyświetlić ten błąd //'Type was not found.', jeśli nie tworzysz projektu, ponieważ nie widać typu wyliczenia.

+0

Dzięki, to działa! Czy istnieje sposób, aby powstrzymać błąd w Desginer? W przeciwnym razie nie będę mógł zobaczyć widoku. – Ernie

+1

Spróbuj zbudować projekt. –

+0

Dzięki. Nie ma kości. Próbowałem budowy, czyszczenia, przebudowy, nic nie wydaje się, aby go. Wydaje się, że muszę żyć z nim w przestrzeni nazw, jeśli chcę korzystać z projektanta: /. To jest VS2010, czy VS2012 jest lepszy z WPF? – Ernie

Powiązane problemy