Spe*_*n D 191 data-binding wpf binding textblock multibinding
我目前正在使用TextBlock以下命令绑定名为的属性的值Name:
<TextBlock Text="{Binding Name}" />
Run Code Online (Sandbox Code Playgroud)
现在,我想绑定另一个名为ID相同的属性TextBlock.
是否可以将两个或多个值绑定到同一个值TextBlock?是否可以通过简单的连接来完成Name + ID,如果没有,可以如何处理它?
Ric*_*ire 406
您可以MultiBinding结合使用该StringFormat物业.用法类似于以下内容:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} + {1}">
<Binding Path="Name" />
<Binding Path="ID" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
给定Name的Foo值和1TextBlock中输出的ID的值将是Foo + 1.
Note: 这仅在.NET 3.5 SP1和3.0 SP2或更高版本中受支持.
Pat*_*ick 122
我知道这是一个迟到的方式,但我想我还会添加另一种方法.
您可以利用可以使用" Run s" 设置Text属性的事实,因此您可以使用Run为每个绑定设置多个绑定.如果您无法访问MultiBinding(我在开发Windows Phone时没有找到),这非常有用
<TextBlock>
<Run Text="Name = "/>
<Run Text="{Binding Name}"/>
<Run Text=", Id ="/>
<Run Text="{Binding Id}"/>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
Cod*_*ior 22
如果这些只是文本块(因此单向绑定),并且您只想连接值,只需绑定两个文本块并将它们放在水平堆栈面板中.
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding ID}"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
这将显示文本(这是所有Textblocks所做的),而不必再进行任何编码.你可能会在它们上留一小部分让它们看起来正确.
Pre*_*gha 11
[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;
}
}
Run Code Online (Sandbox Code Playgroud)
并在标记中
<src:MyConverter x:Key="MyConverter"/>
Run Code Online (Sandbox Code Playgroud)
...
<TextBlock Text="{Binding Name, Converter={StaticResource MyConverter Parameter=ID}}" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
161738 次 |
| 最近记录: |