将文本与数据相结合

时间:2014-12-18 20:33:10

标签: c# wpf xaml data-binding

我有一个如下的字符串。

string someInfo = string.Format("First Name = {0}, Last Name = {1}",firstName, lastName);

此字符串需要使用TextBlock在应用程序中显示。名字和姓氏来自数据库,所以我想为此使用数据绑定。有可能吗?

3 个答案:

答案 0 :(得分:2)

是的,它可能。

但是,由于您有多个绑定,因此需要绑定到MultiBindingMSDN)。

您的绑定看起来像:

  <TextBlock.Text>
    <MultiBinding Converter="{StaticResource NameConverter}">
      <Binding Path="FirstName"/>
      <Binding Path="LastName"/>
    </MultiBinding>
  </TextBlock.Text>

使用MultiValueConverter

public class NameConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        return string.Format("First Name = {0}, Last Name = {1}", values[0], values[1]);
    }
    public objct ConvertBack(...)
    {
        return Binding.DoNothing;
    }
}

答案 1 :(得分:1)

我不知道你是否使用MVVM模式。如果你只是在ViewModel中定义一个属性

public string Someinfo
{
 get { return string.Format("First Name = {0}, Last Name = {1}",firstName, lastName);}
}

然后在Xaml中使用绑定

<TextBlock Text={Binding Path Someinfo} />

我会说这比你在xaml中做的更“干净”。

答案 2 :(得分:1)

是的可能

public  string SomeInfo { get; set; }
        public MainWindow()
        {
            InitializeComponent();
            SomeInfo = GetFirstNameAndLastNameFromDataBase();
            DataContext = this;
        }

        private string GetFirstNameAndLastNameFromDataBase()
        {
            string firstName = "firstName";
            string lastName = "lastName";

            return string.Format("First Name = {0}, Last Name = {1}", firstName, lastName);
        }



<Window x:Class="BindingToTextBlock.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TextBlock Text="{Binding SomeInfo, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBlock>
    </Grid>
</Window>