XamlのCommandParamに列挙値を持つ方法
-
29-09-2019 - |
質問
UIの状態を表す次の列挙があります(UI要素を有効にして無効にするために使用します)。
enum Mode
{
EDIT, RUN, REVIEW
}
CommandParamでコマンドにモードを合格したい:
<Button Grid.Column="6" VerticalAlignment="Top Command="{Binding Path=ChangeMode}"
CommandParameter="{StaticResource local:Mode.RUN}" />
しかし、私はそれを宣言する方法がわかりません。ボタン宣言でわかるように、私は使用しようとします staticresource しかし、それは失敗します。私はSL4とC#を非常に初めてにしているので、何かを逃したと思います。
解決
解決策を見つけました。私は自分の中に作成しました MyViewModel
(私の datacontext)3パブリック属性(タイプモードの)およびコンストラクターでそれらを初期化する(値付き 編集, 走る, レビュー)。次に、私はそれらをXAMLで通常の特性としてバインドしました DataContext
:
CommandParameter="{Binding Path=EDIT}
class MyViewModel
{
public Mode EDIT {set; get;}
public Mode RUN {set; get;}
public Mode REVIEW {set; get;}
MyViewModel()
{
EDIT = Mode.EDIT;
...
}
}
他のヒント
WPFでは、このようなことができます(SLでは機能しない可能性があります) -
<Button Grid.Column="6" Command="{Binding Path=ChangeMode}"
CommandParameter="{x:Static local:Mode.RUN}" />
詳細については、この質問を確認してください -xamlからコマンドパラメーターとして列挙値を渡す
Silverlight x:staticが機能しないので、このようなsthを行うことができます:
<Button Command="{Binding Path=ChangeMode}">
<Button.CommandParameter>
<Mode>RUN</Mode>
</Button.CommandParameter>
</Button>
所属していません StackOverflow