WPF根据另一个控件更改itemscontrol文本框项

时间:2016-05-01 14:10:36

标签: wpf

我有一个ItemsControl绑定到一些对象的集合 在ItemsControl的ItemTemplate中,我有一个绑定到firstName的文本框 我想在firstName文本框文本中添加一个星号 当另一个评论文本块更新时

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我不知道'评论'是否是项目级别或全局的信息,并且来自“神秘”textBlock的源更新(不是更好直接绑定?) 但无论如何,如果你需要一个星号作为绑定字符串的一部分(否则,在单独的元素中,它可能带有隐藏\ visible的触发器),你需要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();
    }
}