【发布时间】:2016-05-01 14:10:36
【问题描述】:
我有一个 ItemsControl 绑定到一些对象的集合 在 ItemsControl 的 ItemTemplate 中,我有一个绑定到 firstName 的文本框 我想在 firstName 文本框文本中添加一个星号 当另一个评论文本块更新时
我该怎么做?
【问题讨论】:
标签: wpf
我有一个 ItemsControl 绑定到一些对象的集合 在 ItemsControl 的 ItemTemplate 中,我有一个绑定到 firstName 的文本框 我想在 firstName 文本框文本中添加一个星号 当另一个评论文本块更新时
我该怎么做?
【问题讨论】:
标签: wpf
我不知道“评论”是项目级别的信息还是全局信息,以及“神秘”文本块的更新来源是什么(直接绑定不是更好吗?)
但无论如何,如果您需要一个星号作为绑定字符串的一部分(否则,在单独的元素中,它可能会触发隐藏\可见),您需要使用 MultiBinding 和 Converter:
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding>
<MultiBinding.Converter>
<local:IsCommentConverter />
</MultiBinding.Converter>
<Binding Path="FirstName" />
<Binding ElementName="txtBlockComment" Path="Text" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
非常简单的转换器:
public class IsCommentConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var firstName = (string)values[0];
var commnet = (string)values[1];
return string.IsNullOrEmpty(commnet) ? firstName : firstName + "*";
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
【讨论】: