我有一个如下的字符串。
string someInfo = string.Format("First Name = {0}, Last Name = {1}",firstName, lastName);
此字符串需要使用TextBlock在应用程序中显示。名字和姓氏来自数据库,所以我想为此使用数据绑定。有可能吗?
答案 0 :(得分:2)
是的,它可能。
但是,由于您有多个绑定,因此需要绑定到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;
}
}
答案 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>