Button
のWPF
から複数のパラメーターを送信するにはどうすればよいですか? TextBox
の値である単一のパラメータを適切に送信できます。これがコードです。
XAML
<TextBox Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="133,22,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
<Button Content="Button" Grid.Row="1" Height="23" Command="{Binding Path=CommandClick}" CommandParameter="{Binding Text,ElementName=textBox1}" HorizontalAlignment="Left" Margin="133,62,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
Code behind
public ICommand CommandClick { get; set; }
this.CommandClick = new DelegateCommand<object>(AddAccount);
private void AddAccount(object obj)
{
//custom logic
}
WPFのボタンから複数のパラメーターを送信するにはどうすればよいですか?.
CommandParameter
として送信できるパラメーターは1つだけです。
より良い解決策は、通常、TextBox
およびその他のコントロールをViewModelの複数のプロパティにバインドすることです。この場合、コマンドは(同じクラスにあるため)コマンドパラメータをまったく必要とせずに、それらすべてのプロパティにアクセスできます。
クラスでプロパティを定義する方法(ViewModelと呼びましょう)を使用してビューにバインドする以外にも、(あまり一般的ではありません)そうしたくない場合があります。これらの状況はMultiBindingであるため、完全を期すために、最初のオプションで満足している場合でも、別のアプローチについて説明します。
あなたの質問に答えるために:
1。MVVMアプローチ:
MVVMアプローチを使用して、ビューによってバインドされるプロパティを定義し、それらのプロパティをCommandParametersを必要とせずにViewModelのコマンドで使用します。
2。MultiBinding:(MVVMアプローチで幸せに暮らせる)
次に示すように、コマンドパラメータをマルチバインドパラメータとして渡します。
<Button Content="MultiBindingExample" Command="{Binding MyCommand}">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource MyMultiConverter}">
<Binding Path="..." ElementName="MyTextBox"/>
<Binding Path="..." ElementName="MySomethingElse"/>
</MultiBinding>
</Button.CommandParameter>
</Button>
IMultiValueConverter
インターフェースを使用して定義されたコンバーターで:
public class MyMultiConverter: IMultiValueConverter
{
public object Convert(object[] values, ...)
{
return values.Clone();
}
}
値の抽出:コマンドのパラメーターをObject[]
として参照し、MultiBindingと同じ順序でパラメーターを使用します。