putting multibinding on a single line in xaml putting multibinding on a single line in xaml wpf wpf

putting multibinding on a single line in xaml


A better (and simpler) approach would be to define a style as a resource which you can easily apply to any TextBox:

<Window.Resources>    <c:MyLogicConverter x:Key="LogicConverter" />    <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}" x:Key="MultiBound">        <Setter Property="IsEnabled">            <Setter.Value>                <MultiBinding Converter="{StaticResource LogicConverter}">                    <Binding ElementName="switch" Path="IsEnabled" />                    <Binding ElementName="switch" Path="IsChecked" />                </MultiBinding>            </Setter.Value>        </Setter>    </Style></Window.Resources><StackPanel Orientation="Horizontal">    <CheckBox Name="switch" />    <TextBox Name="textBox2" Text="Test" Style="{StaticResource MultiBound}" /></StackPanel>


This can be done with a custom markup extension:

public class MultiBinding : System.Windows.Data.MultiBinding{    public MultiBinding (BindingBase b1, BindingBase b2)    {        Bindings.Add(b1);        Bindings.Add(b2);    }    public MultiBinding (BindingBase b1, BindingBase b2, BindingBase b3)    {        Bindings.Add(b1);        Bindings.Add(b2);        Bindings.Add(b3);    }    // Add more constructors if you need.}

Usage:

<TextBox IsEnabled="{local:MultiBinding    {Binding IsEnabled, ElementName=prog0_used},    {Binding IsChecked, ElementName=prog0_used},    Converter={StaticResource LogicConverter}}">


For MultiBinding there is no shorthand string. You need to use the expanded element syntax.