WPF数据绑定:绑定到引用其他两个属性的属性

WPF数据绑定:绑定到引用其他两个属性的属性,wpf,data-binding,dependency-properties,propertychanged,Wpf,Data Binding,Dependency Properties,Propertychanged,基本上,如何将(单向)绑定到名为txtFullName的文本框。最初,文本框中的任何文本都会被清除/清除,因为ToString返回“”。但是,当我对FirstName或LastName进行更改时,它不会根据FullName更新绑定。有办法吗 还有,有没有办法绑定到一个方法(不仅仅是一个字段)?也就是说,直接将绑定设置为ToString()方法,并在FirstName或LastName更改时更新它 哦,如果能有一种通用的方法来处理这件事,那就太棒了。。。例如FullName字段上的属性或ToStr

基本上,如何将(单向)绑定到名为txtFullName的文本框。最初,文本框中的任何文本都会被清除/清除,因为ToString返回“”。但是,当我对FirstName或LastName进行更改时,它不会根据FullName更新绑定。有办法吗

还有,有没有办法绑定到一个方法(不仅仅是一个字段)?也就是说,直接将绑定设置为ToString()方法,并在FirstName或LastName更改时更新它

哦,如果能有一种通用的方法来处理这件事,那就太棒了。。。例如FullName字段上的属性或ToString方法上的属性,告诉它要查找哪些属性以进行更改

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Text;
using System.Windows;
using System.Windows.Controls;

namespace AdvancedDataBinding
{
    public class UserEntity
    {
        static UserEntity()
        {
            FirstNameProperty = DependencyProperty.Register("FirstName", typeof(String), typeof(UserEntity));
            LastNameProperty = DependencyProperty.Register("LastName", typeof(String), typeof(UserEntity));
        }

        public String FirstName
        {
            get { return (String)GetValue(FirstNameProperty); }
            set { SetValue(FirstNameProperty, value); }
        }
        public static readonly DependencyProperty FirstNameProperty;

        public String LastName
        {
            get { return (String)GetValue(LastNameProperty); }
            set { SetValue(LastNameProperty, value); }
        }
        public static readonly DependencyProperty LastNameProperty;

        public String FullName
        {
            get { return ToString(); }
        }

        public override string ToString()
        {
            return FirstName + " " + LastName;
        }
    }
}

如何将文本框绑定到多个值: 创建一个多值转换器,并使用它绑定到FirstName和LastName

FirstName或LastName更改时,FullName不通知。在类中,删除DependencyProperty的所有用法,改为让类实现INotifyPropertyChanged。当FirstName或LastName更改时,为FullName发布PropertyChanged事件。将文本框直接绑定到FullName

签出ObjectDataProvider以“绑定”到方法


在这些答案中,我建议您选择第二个。

如何将文本框绑定到多个值: 创建一个多值转换器,并使用它绑定到FirstName和LastName

FirstName或LastName更改时,FullName不通知。在类中,删除DependencyProperty的所有用法,改为让类实现INotifyPropertyChanged。当FirstName或LastName更改时,为FullName发布PropertyChanged事件。将文本框直接绑定到FullName

签出ObjectDataProvider以“绑定”到方法


在这些答案中,我建议你做第二个。

你可以使用这样的多重绑定

<TextBlock>
     <TextBlock.Text>
        <MultiBinding StringFormat="{}{0}, {1}">
           <Binding Path="LastName" />
           <Binding Path="FirstName" />
        </MultiBinding>
     </TextBlock.Text>
</TextBlock>

您可以使用这样的多重绑定

<TextBlock>
     <TextBlock.Text>
        <MultiBinding StringFormat="{}{0}, {1}">
           <Binding Path="LastName" />
           <Binding Path="FirstName" />
        </MultiBinding>
     </TextBlock.Text>
</TextBlock>


Man即将发布关于INotifyPropertyChanged的相同内容。对于3个小时前提出的一个问题,只有6个观点,我认为我在回答这个问题时表现得很出色……;)那个人正要发布关于INotifyPropertyChanged的同样内容。对于3个小时前提出的一个问题,只有6个观点,我认为我在回答这个问题时表现得很出色……;)