我需要有一个可以使用多个参数的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 那就做到了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top