C# 如何将多个值绑定到一个标签?

C# 如何将多个值绑定到一个标签?,c#,wpf,imultivalueconverter,C#,Wpf,Imultivalueconverter,我已经从实现了IMultiValueConverter,以将多个值绑定到一个标签 namespace MyApp { [ValueConversion(typeof(object), typeof(string))] public class ConcatenateFieldsMultiValueConverter : IMultiValueConverter { public object Convert( object[] values, Ty

我已经从实现了IMultiValueConverter,以将多个值绑定到一个标签

namespace MyApp
{
[ValueConversion(typeof(object), typeof(string))]
public class ConcatenateFieldsMultiValueConverter : IMultiValueConverter
{
  public object Convert(
           object[] values,
           Type targetType,
           object parameter,
           System.Globalization.CultureInfo culture
        )
{
  string strDelimiter;
  StringBuilder sb = new StringBuilder();

  if (parameter != null)
  {
     //Use the passed delimiter.
     strDelimiter = parameter.ToString();
  }
  else
  {
     //Use the default delimiter.
     strDelimiter = ", ";
  }

  //Concatenate all fields
  foreach (object value in values)
  {
     if (value != null && value.ToString().Trim().Length > 0)
     {
        if (sb.Length > 0) sb.Append(strDelimiter);
        sb.Append(value.ToString());
     }
  }

  return sb.ToString();
}

public object[] ConvertBack(
           object value,
           Type[] targetTypes,
           object parameter,
           System.Globalization.CultureInfo culture
     )
{
  throw new NotImplementedException("ConcatenateFieldsMultiValueConverter cannot convert back (bug)!");
}
}
}
然而,当我引用

xmlns:local="clr-namespace:MyApp"
在XAML(名称空间MyApp)中的“我的窗口”属性中,并在“我的窗口”中定义以下内容

<Window.Resources>
  <local:ConcatenateFieldsMultiValueConverter x:Key="mvc"/>
</Window.Resources>

我的单独类ConcatenateFieldsMultiValueConverter无法识别


您能想象一下为什么这个类不能在Window.Resources中被识别吗?

首先编译它,看起来您刚刚遇到了设计时错误。我试图重现你的问题,当我重新编译时,它消失了


它也在运行时运行。

首先编译它,看起来您刚刚遇到设计时错误。我试图重现你的问题,当我重新编译时,它消失了


它也在运行时运行。

首先编译它,看起来您刚刚遇到设计时错误。我试图重现你的问题,当我重新编译时,它消失了


它也在运行时运行。

首先编译它,看起来您刚刚遇到设计时错误。我试图重现你的问题,当我重新编译时,它消失了


它也在运行时运行。

如果您可以使用
TextBlock
,它可以在没有任何转换器的情况下使用XAML来完成

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0}, {1}">
            <Binding Path="Property1"/>
            <Binding Path="Property2"/>
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

但它不适用于标签,因为它使用内容属性而不是文本。因此无法应用StringFormat



对于
标签
,您必须使用
IMultiValueConverter
。如评论中所述,请尝试重新编译您的项目,因为发布的代码看起来不错。

如果您可以使用
TextBlock
,则无需任何转换器即可完成,只需XAML即可

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0}, {1}">
            <Binding Path="Property1"/>
            <Binding Path="Property2"/>
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

但它不适用于标签,因为它使用内容属性而不是文本。因此无法应用StringFormat



对于
标签
,您必须使用
IMultiValueConverter
。如评论中所述,请尝试重新编译您的项目,因为发布的代码看起来不错。

如果您可以使用
TextBlock
,则无需任何转换器即可完成,只需XAML即可

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0}, {1}">
            <Binding Path="Property1"/>
            <Binding Path="Property2"/>
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

但它不适用于标签,因为它使用内容属性而不是文本。因此无法应用StringFormat



对于
标签
,您必须使用
IMultiValueConverter
。如评论中所述,请尝试重新编译您的项目,因为发布的代码看起来不错。

如果您可以使用
TextBlock
,则无需任何转换器即可完成,只需XAML即可

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0}, {1}">
            <Binding Path="Property1"/>
            <Binding Path="Property2"/>
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

但它不适用于标签,因为它使用内容属性而不是文本。因此无法应用StringFormat




对于
标签
,您必须使用
IMultiValueConverter
。如注释中所述,请尝试重新编译您的项目,因为发布的代码看起来很好。

显示转换器的命名空间添加转换器的命名空间。我不太远,因为无法识别。名称空间MyApp中不知道ConcatenateFieldsMultiValueConverter。converter和XAML是否位于同一个项目中?还有,你是得到了构建错误还是仅仅是设计时错误?转换器在同一个项目中,我得到了设计时错误。我还没有编译。请给我显示转换器的名称空间添加转换器的名称空间。我没有走那么远,因为无法识别。名称空间MyApp中不知道ConcatenateFieldsMultiValueConverter。converter和XAML是否位于同一个项目中?还有,你是得到了构建错误还是仅仅是设计时错误?转换器在同一个项目中,我得到了设计时错误。我还没有编译。请给我显示转换器的名称空间添加转换器的名称空间。我没有走那么远,因为无法识别。名称空间MyApp中不知道ConcatenateFieldsMultiValueConverter。converter和XAML是否位于同一个项目中?还有,你是得到了构建错误还是仅仅是设计时错误?转换器在同一个项目中,我得到了设计时错误。我还没有编译。请给我显示转换器的名称空间添加转换器的名称空间。我没有走那么远,因为无法识别。名称空间MyApp中不知道ConcatenateFieldsMultiValueConverter。converter和XAML是否位于同一个项目中?还有,你是得到了构建错误还是仅仅是设计时错误?转换器在同一个项目中,我得到了设计时错误。我还没有编译。谢谢你的解释!谢谢你的解释!谢谢你的解释!谢谢你的解释!