将属性绑定到现有绑定

摩根M.

我有一个带有多个按钮的界面。我想根据“复杂”情况启用或禁用这些按钮。为了避免代码重复,我将此MultiBinding声明为应用程序资源:

<MultiBinding x:Key="MyMultiBinding" Converter="{StaticResource ResourceKey=MyConverter}">
    <Binding Path="IsConnected" />
    <Binding Path="IsOpened" />
</MultiBinding>

这是我声明按钮的方式:

<Button Name="MyButton" Content="Click me!" IsEnabled="{StaticResource ResourceKey=MyMultiBinding}" />

在运行时,出现以下错误:“设置属性IsEnabled引发异常... MultiBinding对属性IsEnabled来说不是有效值”。

我不知道为什么这不起作用。您能给我指出正确的方法吗?谢谢你。

安倍·海德布雷希特

您不能将booleanIsEnabled属性设置为type的值MultiBinding那就是正在发生的事情。

正如@Viv所指出的,您可以声明aStyle做繁重的工作:

<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
    <Setter Property="IsEnabled">
        <Setter.Value>
            <MultiBinding Converter="{StaticResource ResourceKey=MyConverter}">
                <Binding Path="IsConnected" />
                <Binding Path="IsOpened" />
            </MultiBinding>
        </Setter.Value> 
    </Setter>
</Style>

<Button Name="MyButton" Content="Click me!" Style="{StaticResource ButtonStyle}" />

如果Button DataContext具有这些属性,则效果很好如果它们各自具有不同DataContext的绑定功能,那么它会特别好用,从而使它们具有不同的原因。

如果它们都绑定到相同的对象DataContext,或者属性在不同的对象上,则可以使用Freezable技巧来提供一个将按钮绑定到的值:

<BindingProxy x:Key="isEnabled">
    <BindingProxy.Data>
        <MultiBinding Converter="{StaticResource ResourceKey=MyConverter}">
            <Binding Path="IsConnected" />
            <Binding Path="IsOpened" />
        </MultiBinding>
    </BindingProxy.Data>
</BindingProxy>

<Button Name="MyButton" Content="Click me!" IsEnabled="{Binding Data, Source={StaticResource isEnabled}}" />

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据对象属性将数据绑定到现有数量的元素

来自分类Dev

将 TextBlock 的 Text 属性绑定到当前现有的 DataContext

来自分类Dev

将属性绑定到DataTemplateSelector

来自分类Dev

将多个文件绑定到具有属性的数组

来自分类Dev

将属性绑定到itemssource集合的属性

来自分类Dev

将数字属性绑定到布尔属性

来自分类Dev

将UserControl属性绑定到Window属性

来自分类Dev

将资源属性绑定到DataContext属性

来自分类Dev

将现有套接字与UDT绑定

来自分类Dev

将组合绑定到本地枚举属性

来自分类Dev

将事件绑定到属性的替代方法

来自分类Dev

将控件的“启用”属性绑定到变量

来自分类Dev

将ListBox.SelectedItem绑定到属性

来自分类Dev

将属性绑定到用户控件

来自分类Dev

将AngularJS绑定到MVC ViewModel属性

来自分类Dev

将单选按钮绑定到枚举属性

来自分类Dev

将文本绑定到附加属性

来自分类Dev

AngularJS将类属性绑定到模型

来自分类Dev

将属性值绑定到组合框

来自分类Dev

将RadioButton绑定到单个属性?

来自分类Dev

将文本框绑定到属性

来自分类Dev

将触发值绑定到属性

来自分类Dev

如何将前景绑定到属性

来自分类Dev

将地图绑定到Scala属性

来自分类Dev

将单选按钮绑定到枚举属性

来自分类Dev

无法将selectlistitem绑定到模型属性

来自分类Dev

无法将模型属性绑定到SelectListItem

来自分类Dev

将SelectedItem绑定到VM上的属性

来自分类Dev

将double属性绑定到AngleProperty