将文本与数据相结合

本文关键字:相结合 数据 文本 | 更新日期: 2023-09-27 18:34:36

我有一个这样的字符串。

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

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

将文本与数据相结合

是的,这是可能的。

但是,由于有多个绑定,因此需要绑定到MultiBinding (MSDN(。

绑定如下所示:

  <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;
    }
}

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

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

,然后在 Xaml 中使用绑定

<TextBlock Text={Binding Path Someinfo} />

我会说这比在你的 xaml 中这样做更"干净"。

是的,有可能

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>