답변:
속성 MultiBinding
과 함께 사용할 수 있습니다 StringFormat
. 사용법은 다음과 유사합니다.
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} + {1}">
<Binding Path="Name" />
<Binding Path="ID" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
주기 Name
의 값 Foo
과 ID
의 값을 1
, TextBlock의 당신의 출력은 될 것이다 Foo + 1
.
Note:
.NET 3.5 SP1 및 3.0 SP2 이상에서만 지원됩니다.
DataGrid
정렬 동작 과 같은 방식으로 사용하면 불행히도 작동하지 않습니다. 보다 적절한 솔루션은 모델에서 바인딩 할 적절한 문자열 형식으로 읽기 전용 특성을 작성하는 것입니다. 말할 필요도없이,이 방법은 조금 장황하지만 빠르게 포맷 할 수있는 깔끔한 방법입니다.
XamlParseException: A 'Binding' cannot be set on the 'Path' property of type 'Binding'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.
나는 이것이 늦다는 것을 알고 있지만, 나는 이것을하는 또 다른 방법을 추가 할 것이라고 생각했다.
" Run s"를 사용하여 Text 속성을 설정할 수 있다는 사실을 이용할 수 있으므로 각각에 대해 Run을 사용하여 여러 바인딩을 설정할 수 있습니다. 이것은 멀티 바인딩 (Windows Phone 용으로 개발할 때 찾지 못한)에 액세스 할 수없는 경우에 유용합니다.
<TextBlock>
<Run Text="Name = "/>
<Run Text="{Binding Name}"/>
<Run Text=", Id ="/>
<Run Text="{Binding Id}"/>
</TextBlock>
[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}}" />