将文本与数据相结合
本文关键字:相结合 数据 文本 | 更新日期: 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>