2008-12-11 6 views
160

Ich möchte einen Enum-Wert als Befehlsparameter in WPF passieren, so etwas wie dies mit:Übergabe eines ENUM-Wert als Befehlsparameter von XAML

<Button 
    x:Name="uxSearchButton" 
    Command="{Binding Path=SearchMembersCommand}" 
    CommandParameter="SearchPageType.First" 
    Content="Search"> 
</Button> 

SearchPageType ist eine Enumeration, und das ist zu wissen, von dem Knopf Suche Befehl wird aufgerufen.

Ist dies in WPF möglich, oder wie können Sie einen Enum-Wert als Befehlsparameter übergeben?

Antwort

231

Versuchen Sie, diese

<Button CommandParameter="{x:Static local:SearchPageType.First}" .../> 

local - Ihre namespace reference in der XAML ist

42

Sie Eigenschaft Elementsyntax für diese anstelle von Attributsyntax verwenden:

<Button x:Name="uxSearchButton" 
     Command="{Binding Path=SearchMembersCommand}" 
     Content="Search"> 
    <Button.CommandParameter> 
     <SearchPageType>First</SearchPageType> 
    </Button.CommandParameter> 
</Button> 
147

Denken Sie auch daran, dass, wenn Ihr enum ist innerhalb einer anderen Klasse müssen Sie den Operator + verwenden.

<Button CommandParameter="{x:Static local:MyOuterType+SearchPageType.First}".../> 
+11

You rock !!! Du hast mich etwas gelernt, ich habe vorher noch nie den Operator + gesehen. Danke vielmals!!! – Nicolas

+0

Vielen Dank! Woher hast du das Wissen? – Sheen

25

Auch wenn Sie Enum a [Flags] zur Verfügung stellen möchten Sie die Eigenschaft Elementsyntax verwenden:

<Button> 
    <Button.CommandParameter> 
    <SearchPageType>First,Second</SearchPageType> 
    <Button.CommandParameter> 
</Button> 
+1

Das ist nützlich, hatte nie eine Voraussetzung, aber gut zu wissen, dass dies möglich ist. – akjoshi

+0

Dies ist genau das, was ich gesucht habe; Danke. – Will

Verwandte Themen