WPF の コマンド 引数 を 設定 する 方法

0 件のコメント

基本は xaml で CommandParameter属性 を指定することで引数を渡せます。 以下ではいくつかの サンプルコード を記載しました。

目次

固定値 を 渡す 例

CommandParameter="固定値" を指定します。 ラジオボタンくらいしか使い道が思いつきません…。

<Window x:Class="WpfApplication.MainView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:WpfApplication.ViewModels"
        Title="MainWindow"
        Name="window" >
    <Window.DataContext>
        <vm:MainViewModel />
    </Window.DataContext>
    <Grid>
        <RadioButton Content="春"
                     Command="SelectSeason"
                     CommandParameter="1" />
        <RadioButton Content="夏"
                     Command="SelectSeason"
                     CommandParameter="2" />
        <RadioButton Content="秋"
                     Command="SelectSeason"
                     CommandParameter="3" />
        <RadioButton Content="冬"
                     Command="SelectSeason"
                     CommandParameter="4" />
    </Grid>
</Window>

要素 を 渡す 例

渡したい要素に Name属性 を設定し、CommandParameter="{Binding ElementName=要素名}" を指定します。 Name属性 さえ指定していれば良いので、 Control でも Window でも渡せてしまいます。

TextBox コントロール を引数に渡す 例

<Window x:Class="WpfApplication.MainView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:WpfApplication.ViewModels"
        Title="MainWindow"
        Name="window" >
    <Window.DataContext>
        <vm:MainViewModel />
    </Window.DataContext>
    <Grid>
        <TextBox Text="サンプル"
                 Name="textbox" />
        <Button Content="閉じる"
                Command="Close"
                CommandParameter="{Binding ElementName=textbox}"/>
    </Grid>
</Window>

Window を引数に渡す 例

<Window x:Class="WpfApplication.MainView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:WpfApplication.ViewModels"
        Title="MainWindow"
        Name="window" >
    <Window.DataContext>
        <vm:MainViewModel />
    </Window.DataContext>
    <Grid>
        <TextBox Text="サンプル"
                 Name="textbox" />
        <Button Content="閉じる"
                Command="Close"
                CommandParameter="{Binding ElementName=window}"/>
<!--            CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}} -->
    </Grid>
</Window>

要素 の プロパティ を 渡す 例

渡したい要素に Name属性 を設定し、CommandParameter="{Binding ElementName=要素名 Path=プロパティ名}" を指定します。

TextBox の Textプロパティ を引数に渡す 例

<Window x:Class="WpfApplication.MainView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:WpfApplication.ViewModels"
        Title="MainWindow"
        Name="window" >
    <Window.DataContext>
        <vm:MainViewModel />
    </Window.DataContext>
    <Grid>
        <TextBox Text="サンプル"
                 Name="textbox" />
        <Button Content="閉じる"
                Command="Close"
                CommandParameter="{Binding ElementName=textbox Path=Text}"/>
    </Grid>
</Window>