Is there a way to take this multibinding:
<TextBox.IsEnabled>     <MultiBinding Converter="{StaticResource LogicConverter}">         <Binding ElementName="prog0_used" Path="IsEnabled" />         <Binding ElementName="prog0_used" Path="IsChecked" />     </MultiBinding> </TextBox.IsEnabled> and put is all on one line, as in <TextBox IsEnabled="" />?
If so, where can I learn the rules of this formattiong?
Binding path syntax. Use the Path property to specify the source value you want to bind to: In the simplest case, the Path property value is the name of the property of the source object to use for the binding, such as Path=PropertyName . Subproperties of a property can be specified by a similar syntax as in C#.
Multibinding takes multiple values and combines them into another value. There are two ways to do multibinding, either using StringFormat or by a converter. The StringFormat is simple compared to a converter, so we will start with that first. <TextBlock> <TextBlock.Text>
In this article Multi-bindings provide the ability to attach a collection of Binding objects to a single binding target property. They are created with the MultiBinding class, which evaluates all of its Binding objects, and returns a single value through a IMultiValueConverter instance provided by your application.
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}}"> If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With