gpt4 book ai didi

c# - 在 xaml 中将多个参数传递给 CommandParameter

转载 作者:行者123 更新时间:2023-12-02 17:19:06 29 4
gpt4 key购买 nike

我想通过xaml中的commandparameter将多个参数传递给命令。

<i:InvokeCommandAction Command="{Binding HideLineCommand, ElementName=militaryLineAction}"
CommandParameter="{Binding ID, ElementName=linesSelector}"/>

在上面的示例中,我想将其他变量传递给 ID 变量旁边的命令。我怎样才能实现它?非常感谢。

最佳答案

您可以将MultiBinding转换器结合使用。

检查这个示例。

假设您有 Person 类。

public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}

并且您希望此类作为您的命令参数。

您的 XAML 应如下所示:

<Button Content="Start"
DataContext="{Binding SourceData}"
>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding SendStatus, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}">
<i:InvokeCommandAction.CommandParameter>
<MultiBinding Converter="{StaticResource myPersonConverter}">
<MultiBinding.Bindings>
<Binding Path="Name" />
<Binding Path="Age" />
</MultiBinding.Bindings>
</MultiBinding>
</i:InvokeCommandAction.CommandParameter>
</i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>

其中 SourceData 是 Person 对象。

并且 myPersonConverter 是一个 PersonConverter 对象。

public class PersonConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values != null && values.Length == 2)
{
string name = values[0].ToString();
int age = (int)values[1];

return new Person { Name = name, Age = age };
}
return null;
}

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}

在您的命令中,您可以使用 Person 对象作为参数:

    public ICommand SendStatus { get; private set; }
private void OnSendStatus(object param)
{
Person p = param as Person;
if (p != null)
{

}
}

关于c# - 在 xaml 中将多个参数传递给 CommandParameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13384143/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com