美文网首页
WPF中的多绑定实现

WPF中的多绑定实现

作者: Ritchie_Li | 来源:发表于2022-05-16 19:24 被阅读0次

效果如下:

左边3个文本框信息,下面的文本框绑定上2个文本框信息

<StackPanel HorizontalAlignment="Left"

                    Height="230"

                    Margin="10 10 0 0"

                    VerticalAlignment="Top" Width="366">

  <TextBox x:Name="txtFname" Text="FName"/>

  <TextBox x:Name="txtLname" Text="LName"/>

  <TextBox>

    <TextBox.Text>

      <MultiBinding Converter="{StaticResource FLName2FullName}">

          <Binding ElementName="txtFname" Path="Text"/>

          <Binding ElementName="txtLname" Path="Text"/>

      </MultiBinding>

    </TextBox.Text>

  </TextBox>

</StackPanel>

实现多绑定转换类:

using System.Windows.Data;

public class FirstNameLastNameToFullNameConverter : IMultiValueConverter

{

  public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)

  {

    if (values != null)

    {

        return values[0].ToString() + " " + values[1].ToString();

    }

    else

    {

        return null;

    }

}

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)

{

    string[] values = null;

    if (value != null && value.ToString() != "")

    {

      return values = value.ToString().Split(' ');

    }

    else

    {

        return null;

    }

  }

}

右边部分是CheckBox的多绑定

<StackPanel HorizontalAlignment="Left"

                    Height="232"

                    Margin="408 8 0 0"

                    VerticalAlignment="Top" Width="382">

<TextBlock TextWrapping="Wrap" Text="Which statements are True? select all that apply"/>

  <CheckBox x:Name="chk1" Content="target binds to multiple source"/>

  <CheckBox x:Name="chk2" Content="binding can not done inline"/>

  <CheckBox x:Name="chk3" Content="requires multbinding"/>

      <TextBlock>

        <TextBlock.Text>

          <MultiBinding Converter="{StaticResource bools2String}">

                <Binding ElementName="chk1" Path="IsChecked"/>

                <Binding ElementName="chk2" Path="IsChecked"/>

                <Binding ElementName="chk3" Path="IsChecked"/>

          </MultiBinding>

          </TextBlock.Text>

      </TextBlock>

</StackPanel>

转换类:

using System.Windows.Data;

public class BoolsToStringConverter : IMultiValueConverter

{

  public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)

{

  string answer = " You answer is : ";

  if ((bool)values[0] == true && (bool)values[1] == true && (bool)values[2] == true)

  {

    return answer + "CORRECT";

  }

  else if ((bool)values[0] == false && (bool)values[1] == false && (bool)values[2] == false)

  {

      return answer;

  }

  else

  {

    return answer + "INCORRECT";

  }

}

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)

{

    throw new NotImplementedException();

}

}

资源设置:

<Window.Resources>

  <Style TargetType="StackPanel">

      <Setter Property="Background" Value="Beige"/>

  </Style>

  <Style TargetType="CheckBox">

      <Setter Property="Margin" Value="5"/>

      <Setter Property="FontSize" Value="20"/>

      <Setter Property="FontWeight" Value="Bold"/>

  </Style>

  <Style TargetType="TextBlock">

      <Setter Property="Margin" Value="3"/>

      <Setter Property="FontSize" Value="20"/>

  </Style>

    <Style TargetType="TextBox">

      <Setter Property="Margin" Value="3"/>

      <Setter Property="FontSize" Value=" 16"/>

    </Style>

<local:FirstNameLastNameToFullNameConverter x:Key="FLName2FullName"></local:FirstNameLastNameToFullNameConverter>

<local:BoolsToStringConverter x:Key="bools2String"/>

</Window.Resources>

相关文章

  • WPF中的多绑定实现

    效果如下: 左边3个文本框信息,下面的文本框绑定上2个文本框信息

  • WPF ControllTemplate Triggers小记

    WPF中,样式模板中如果定义EventTrigger事件方式实现动画。那么需要注意两点: 1、对于绑定的属性的Ev...

  • wpf 中的无效绑定

    设置wpf绑定的跟踪级别为high,output中观察wpf的处理流程: 对于一个无效的绑定,wpf尝试了5次,最...

  • 基于WPF的截图工具,功能和QQ截图类似

    本项目基于WPF开发,适合于新手上手WPF,里面不涉及到太复杂的用法,都是一些基础绑定等操作。 有关于WPF或者项...

  • WPF数据绑定

    元素绑定 数据绑定最简单的形式是,源对象是WPF元素而且源属性是依赖属性。依赖项属性具有内置的更改通知支持,当在源...

  • WPF/C#学习笔记.1:WPF中的布局TabControl,G

    WPF/C#学习笔记.1 WPF中的布局TabControl,Grid与GridSpliter等 WPF布局原则 ...

  • 测试WPF绑定bug

    1、低级错误:有没有绑错2、去属性那里打断点,get、set有没有进3、xaml加上twoway,UpdateSo...

  • WPF 数据绑定Binding

    自定义Binding 当为Binding设置了继承System.ComponentModel.INotifyPro...

  • WPF MVVM 动态绑定

    1.MVVM(Caliburn.Micro) 按钮绑定的两种方式 通过名称直接绑定到ViewModel中的方法...

  • WPF 绑定枚举集合

    假如存在星期名称的枚举类型: public enum Weeks { Monday, Tuesday, ...

网友评论

      本文标题:WPF中的多绑定实现

      本文链接:https://www.haomeiwen.com/subject/oymwurtx.html