Übergabe eines Aufzählungswerts als Befehlsparameter von XAML

182

Ich möchte einen Aufzählungswert als Befehlsparameter in WPF übergeben und dabei Folgendes verwenden:

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

SearchPageType ist eine Aufzählung und dies ist zu wissen, von welchem ​​Schaltflächensuchbefehl aufgerufen wird.

Ist dies in WPF möglich oder wie können Sie einen Aufzählungswert als Befehlsparameter übergeben?

Akjoshi
quelle

Antworten:

283

Versuche dies

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

local- ist Ihre Namespace-Referenz in der XAML

Jobi Joy
quelle
Wenn ich in diesem Namespace my.namespace eine Aufzählung mit dem Namen "MyEnum" habe, wie definiere ich "local"?
Vering
171

Denken Sie auch daran, dass Sie den +Operator verwenden müssen, wenn sich Ihre Aufzählung in einer anderen Klasse befindet .

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

Sie können hierfür die Eigenschaftselementsyntax anstelle der Attributsyntax verwenden:

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

Wenn Sie eine [ Flags] -Aufzählung bereitstellen möchten, können Sie auch die Eigenschaftselementsyntax verwenden:

<Button>
  <Button.CommandParameter>
    <SearchPageType>First,Second</SearchPageType>
  <Button.CommandParameter>
</Button>
Hartmape
quelle