programing

단일 WPF 텍스트블록에 여러 값을 바인드하려면 어떻게 해야 합니까?

oldcodes 2023. 4. 14. 22:05
반응형

단일 WPF 텍스트블록에 여러 값을 바인드하려면 어떻게 해야 합니까?

현재 사용하고 있는 것은TextBlock이름붙인 속성의 값을 바인드합니다.Name:

<TextBlock Text="{Binding Name}" />

다음 이름을 가진 다른 속성을 바인딩합니다.ID똑같이TextBlock.

두 개 이상의 값을 동일한 값으로 바인딩할 수 있습니까?TextBlock? 간단한 연결로 할 수 있나요?Name + ID그렇지 않다면 어떻게 접근해야 할까요?

를 속성과 조합하여 사용할 수 있습니다.사용법은 다음과 같습니다.

<TextBlock>
    <TextBlock.Text>    
        <MultiBinding StringFormat="{}{0} + {1}">
            <Binding Path="Name" />
            <Binding Path="ID" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

부여Name의 값.Foo그리고.ID의 값.1TextBlock의 출력은 다음과 같습니다.Foo + 1.

주의: 이것은 에서만 지원됩니다.NET 3.5 SP1 및 3.0 SP2 이후

좀 늦은 건 알지만 다른 방법을 더 추가해 봐야겠어요.

"실행"을 사용하여 텍스트 속성을 설정할 수 있으므로 각각에 대해 실행을 사용하여 여러 바인딩을 설정할 수 있습니다.이 기능은 MultiBinding(Windows Phone용 개발 시 찾지 못한 것)에 액세스할 수 없는 경우에 유용합니다.

<TextBlock>
  <Run Text="Name = "/>
  <Run Text="{Binding Name}"/>
  <Run Text=", Id ="/>
  <Run Text="{Binding Id}"/>
</TextBlock>

텍스트 블록(따라서 단방향 바인딩)으로 값을 연결하려는 경우 두 개의 텍스트 블록을 바인딩하여 수평 스택 패널에 넣습니다.

    <StackPanel Orientation="Horizontal">
        <TextBlock Text="{Binding Name}"/>
        <TextBlock Text="{Binding ID}"/>
    </StackPanel>

그러면 텍스트(모든 텍스트 블록)가 더 이상 코딩할 필요 없이 표시됩니다.조금 여백을 둬서 제대로 보이게 할 수도 있어요.

Value Converter 사용

[ValueConversion(typeof(string), typeof(String))]
public class MyConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return string.Format("{0}:{1}", (string) value, (string) parameter);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {

        return DependencyProperty.UnsetValue;
    }
}

마크업에는

<src:MyConverter x:Key="MyConverter"/>

. . .

<TextBlock Text="{Binding Name, Converter={StaticResource MyConverter Parameter=ID}}" />

언급URL : https://stackoverflow.com/questions/2552853/how-to-bind-multiple-values-to-a-single-wpf-textblock

반응형