gpt4 book ai didi

wpf - 如何将 ComboBoxItem 的 IsEnabled 属性绑定(bind)到 Command 的 CanExecute 方法的结果

转载 作者:行者123 更新时间:2023-12-02 00:41:46 27 4
gpt4 key购买 nike

我有一个自定义的 SplitButton 实现,其中包含一个 ComboBox,其中有几个 ComboBoxItems 绑定(bind)到命令。我可以很好地绑定(bind)到命令的名称和文本属性,但无法绑定(bind) ComboBoxItem 的 已启用 命令的 的结果的属性可以执行 方法,因为它是一种方法。是否有一些我不知道绑定(bind)到方法的语法,或者是否有一些技巧可以帮助我绑定(bind)到 CanExecute。

顺便说一句,我考虑过使用自定义 ValueConverter,但我意识到当重新评估 CanExecute 时我可能不会收到任何更新,因为它不是属性并且我的命令不是业务对象。在我看来,此时我可能必须为命令创建一个 ViewModel 才能仅在我的自定义 SplitButton 控件中使用,但这对我来说似乎有点过火了。

最佳答案

您可以在 ItemContainerStyle(ComboBoxItem 样式) 中放置一个按钮(如果在绑定(bind)到 ICommand 的 controltemplate 中没有按钮)并将命令绑​​定到它
并添加一个触发器来检查 Button.IsEnabled 并将该值设置为 ComboBoxItem。所以这里我们使用 Button 作为 CommandSource 只是为了从 CanExeute 中获取 IsEnabled。您可以将按钮的高度和宽度设置为零

 <ControlTemplate....>
<Grid ...
<Button x:Name="dummyButton" Command="{Binding YourCommand}" ....
......
</Grid>

<ControlTemplate.Triggers>
<Trigger SourceName="dummyButton" Property="IsEnabled" Value="False">
<Setter Property="IsEnabled" Value="False"/>
</Trigger>
</ControlTemplate.Triggers>

关于wpf - 如何将 ComboBoxItem 的 IsEnabled 属性绑定(bind)到 Command 的 CanExecute 方法的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2320553/

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