2014-12-18 2 views
2

다음과 같은 문자열이 있습니다.데이터와 텍스트 결합

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

이 문자열은 TextBlock을 사용하여 응용 프로그램에 표시해야합니다. 이름과 성이 데이터베이스에서오고 있으므로 데이터 바인딩을 사용하고 싶습니다. 할 수 있습니까?

답변

2

네, 가능합니다.

그러나 바인딩이 여러 개인 경우 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; 
    } 
} 
+0

가능합니다. 어떤 아이디어? – BKS

+1

@johnsmith 어떻습니까? – BradleyDotNET

+0

<변환기 : NameConverter x : Key = "NameConverter"/> "네임 스페이스 접두사"변환기 "는 다음과 같습니다. 정의되지 않았습니다 ". 어떤 네임 스페이스가 Converter와 연결되어야하는지 어떻게 알 수 있습니까? – BKS

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에 해당하는 것보다 '청소기'라고한다.

+1

이 작업을 수행하는 합리적인 방법이지만 INotifyPropertyChanged를 발생시킬 때 추가로 복잡성을 고려해야합니다. – BradleyDotNET

1

그렇습니다 나는 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> 
관련 문제