在使用多接口绑定多个命令参数方面需要其他帮助
-
24-09-2019 - |
题
我需要有一个可以使用多个参数的togglebutton的命令处理程序,即所述togglebutton的签名属性,以及一个恒定值,这可能是字符串,字节,int ...都不重要。
我发现 这个很棒的问题 并遵循了答案的链接,并阅读了有关多重联系和ImultivalUeconverter的阅读。直到我不得不编写多重连接,我才意识到我还需要传递恒定价值并且无法做类似的事情
<Binding Value="1" />
然后我遇到了另一个 肯特·布加特(Kent Boogaart)回答的类似问题, ,然后我开始考虑可以解决这个问题的方法。
一种可能的方法是不使用MVVM,而只需将标签属性添加到我的togglebutton,在这种情况下,我的多插入看起来像这样:
<MultiBinding Converter="{StaticResource MyConverter}">
<MultiBinding.Bindings>
<Binding Path="IsChecked" />
<Binding Path="Tag" />
</MultiBinding.Bindings>
</MultiBinding>
肯特(Kent)按照“如果您使用MVVM,您应该能够解决此问题”的评论。但是,我不确定这对我来说是一个选择,即使我已经采用MVVM作为我的WPF模式 必要性 选择。
我这样说的原因是我在UserControl中有多个togglebutton,并且每个togglebuttons的命令都需要调用相同的函数。但是,由于它们是toggleButtons,所以我无法使用绑定到在ViewModel中绑定的属性,因为我不知道最后一个单击哪一个。我想我可以添加另一个私人财产来跟踪这一点,但这似乎有些愚蠢。就不变而言,如果我做了跟踪想法,我可能会摆脱这一点,但不确定其他方法可以解决它。
有人在这里对我有好建议吗? :)
编辑 - 好的,所以我需要更新我的绑定,这仍然无法正常工作:
<ToggleButton Tag="1" Command="{Binding MyCommand}" Style="{StaticResource PassFailToggleButtonStyle}" HorizontalContentAlignment="Center" Background="Transparent" BorderBrush="Transparent" BorderThickness="0">
<ToggleButton.CommandParameter>
<MultiBinding Converter="{StaticResource MyConverter}">
<MultiBinding.Bindings>
<Binding Path="IsChecked" RelativeSource="{RelativeSource Mode=Self}" />
<Binding Path="Tag" RelativeSource="{RelativeSource Mode=Self}" />
</MultiBinding.Bindings>
</MultiBinding>
</ToggleButton.CommandParameter>
</ToggleButton>
休息是有效的,但没有标签。我只是意识到标签是字符串... duh。现在正在工作!关键是使用 自己.
解决方案
如上所述,我弄清楚了。我不得不使用 Self
为了 RelativeSource
那就做到了。