다음과 같은 문자열이 있습니다.데이터와 텍스트 결합
string someInfo = string.Format("First Name = {0}, Last Name = {1}",firstName, lastName);
이 문자열은 TextBlock을 사용하여 응용 프로그램에 표시해야합니다. 이름과 성이 데이터베이스에서오고 있으므로 데이터 바인딩을 사용하고 싶습니다. 할 수 있습니까?
다음과 같은 문자열이 있습니다.데이터와 텍스트 결합
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
A를 :
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 패턴을 사용 여부를 알 수 없습니다. 당신이 당신의 ViewModel
public string Someinfo
{
get { return string.Format("First Name = {0}, Last Name = {1}",firstName, lastName);}
}
의 속성을 정의하고 다음 XAML
<TextBlock Text={Binding Path Someinfo} />
에 바인딩을 사용하는 경우 나는 이것이 당신의 XAML에 해당하는 것보다 '청소기'라고한다.
이 작업을 수행하는 합리적인 방법이지만 INotifyPropertyChanged를 발생시킬 때 추가로 복잡성을 고려해야합니다. – BradleyDotNET
그렇습니다 나는 Page 개체에서 이것을 사용하고, 나는 페이지 XAML에서 Windows.Resources를 선언 할 수처럼 보이지 않는다
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>
가능합니다. 어떤 아이디어? – BKS
@johnsmith 어떻습니까? – BradleyDotNET