在 WPF 中将包括 Type 在内的多个参数传递给 ViewModel
Passing multiple parameters including Type to ViewModel in WPF
如何将来自 XAML 的两个参数,一个类型对象和一个模型 {Binding}
,作为 CommandParameter 传递给 ViewModel。我在 SO 上看到了不同的帖子,但都在使用控件绑定。有什么方法可以改为传递类型吗?
我想要这样的东西:
<MenuItem x:Key="RuleBase" Header="RuleBase" x:Shared="False"
Command="{Binding DataContext.AddRuleCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}">
<MenuItem.CommandParameter>
<MultiBinding Converter="{StaticResource MultiParameterConverter}">
<Binding Path="{Binding}" />
<Binding Path="{x:Type local:RuleBase}" />
</MultiBinding>
</MenuItem.CommandParameter>
</MenuItem>
这段代码仅使用一个参数:
<MenuItem x:Key="RuleBase" Header="RuleBase" x:Shared="False"
Command="{Binding DataContext.AddRuleCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
CommandParameter="{x:Type local:RuleBase}" />
您可以在多重绑定中使用此绑定:
<MultiBinding Converter="{StaticResource MultiParameterConverter}">
<Binding />
<Binding Source="{x:Type local:RuleBase}" />
</MultiBinding>
但由于 Type 不会改变,并且在多重绑定表达式中只有一个真正的绑定,因此可以这样重写:
<MenuItem CommandParameter="{Binding ConverterParameter={x:Type local:RuleBase},
Converter={StaticResource YourConverter}}" />
尝试将整个 MenuItem 作为命令参数传递:
CommandParameter="{Binding RelativeSource={RelativeSource Self}}"
您必须使用可以带参数的 ICommand 实现。
如何将来自 XAML 的两个参数,一个类型对象和一个模型 {Binding}
,作为 CommandParameter 传递给 ViewModel。我在 SO 上看到了不同的帖子,但都在使用控件绑定。有什么方法可以改为传递类型吗?
我想要这样的东西:
<MenuItem x:Key="RuleBase" Header="RuleBase" x:Shared="False"
Command="{Binding DataContext.AddRuleCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}">
<MenuItem.CommandParameter>
<MultiBinding Converter="{StaticResource MultiParameterConverter}">
<Binding Path="{Binding}" />
<Binding Path="{x:Type local:RuleBase}" />
</MultiBinding>
</MenuItem.CommandParameter>
</MenuItem>
这段代码仅使用一个参数:
<MenuItem x:Key="RuleBase" Header="RuleBase" x:Shared="False"
Command="{Binding DataContext.AddRuleCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
CommandParameter="{x:Type local:RuleBase}" />
您可以在多重绑定中使用此绑定:
<MultiBinding Converter="{StaticResource MultiParameterConverter}">
<Binding />
<Binding Source="{x:Type local:RuleBase}" />
</MultiBinding>
但由于 Type 不会改变,并且在多重绑定表达式中只有一个真正的绑定,因此可以这样重写:
<MenuItem CommandParameter="{Binding ConverterParameter={x:Type local:RuleBase},
Converter={StaticResource YourConverter}}" />
尝试将整个 MenuItem 作为命令参数传递:
CommandParameter="{Binding RelativeSource={RelativeSource Self}}"
您必须使用可以带参数的 ICommand 实现。