C# 字符串转换器无法强制转换类型为';MS.Internal.NamedObject';输入';System.String';

C# 字符串转换器无法强制转换类型为';MS.Internal.NamedObject';输入';System.String';,c#,exception,C#,Exception,我创建了一个转换器,它将单个字符串与逗号分隔的字符串进行比较,如果找到单个匹配项,则返回yes。我有个例外 “System.InvalidCastException:无法将类型为'MS.Internal.NamedObject'的对象强制转换为类型为'System.String'。” 在标记中,它用作DataGrid列中的DataTemplate,以指示找到匹配项: <DataTemplate x:Key="Match"> <StackPanel> <Ell

我创建了一个转换器,它将单个字符串与逗号分隔的字符串进行比较,如果找到单个匹配项,则返回yes。我有个例外

“System.InvalidCastException:无法将类型为'MS.Internal.NamedObject'的对象强制转换为类型为'System.String'。”

在标记中,它用作DataGrid列中的DataTemplate,以指示找到匹配项:

<DataTemplate x:Key="Match">
<StackPanel>
    <Ellipse x:Name="Matches_Icon" Background="Green" HorizontalAlignment="Center" VerticalAlignment="Center" />
    <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Visibility="Collapsed" Orientation="Vertical">
        <TextBox x:Name="value0" Text="{Binding ElementName=SingleItem,Path=Text,Mode=OneWay,TargetNullValue=0}" />
        <TextBlock x:Name="value1" Text="{Binding CommaDeliminatedItem,Mode=OneWay,TargetNullValue=0}" />
        <TextBox x:Name="Result" >
            <TextBox.Text>
                <MultiBinding Converter="{StaticResource IsEqual}">
                    <Binding ElementName="value0" Path="Text" Mode="OneWay" TargetNullValue="0" />
                    <Binding ElementName="value1" Path="Text" Mode="OneWay" TargetNullValue="0" />
                </MultiBinding>
            </TextBox.Text>
        </TextBox>
    </StackPanel>
</StackPanel>
<DataTemplate.Triggers>
    <DataTrigger Binding="{Binding ElementName=Result,Path=Text}" Value="yes">
        <Setter TargetName="SelectedArt_Icon" Property="Visibility" Value="Visible" />
    </DataTrigger>
    <DataTrigger Binding="{Binding ElementName=Result,Path=Text}" Value="no">
        <Setter TargetName="SelectedArt_Icon" Property="Visibility" Value="Collapsed" />
    </DataTrigger>
</DataTemplate.Triggers>

为了进一步深入研究,XAML绑定中的“value1”是数据网格中的数据,value0是从数据网格外部提供的。当找到匹配项时,将返回“是”(不知道为什么我们没有使用boolean…),这将触发椭圆的可见性属性

不应该传入空值,所以我不知道这个错误是从哪里传入的

从日志中编辑: System.InvalidCastException:无法将类型为“MS.Internal.NamedObject”的对象强制转换为类型为“System.String”。 在CustomMashupUI.IsEqual.Convert(对象[]值,键入targetTypes,对象参数,CultureInfo区域性) 位于System.Windows.Data.MultiBindingExpression.TransferValue()处 位于System.Windows.Data.MultiBindingExpression.Transfer()处 位于System.Windows.Data.MultiBindingExpression.UpdateTarget(布尔includeInnerBindings) 位于System.Windows.Data.MultiBindingExpression.AttachToContext(布尔lastChance) 位于System.Windows.Data.MultiBindingExpression.MS.Internal.Data.IDataBindingClient.AttachToContext(布尔lastChance) 位于MS.Internal.Data.DataBindEngine.Task.Run(布尔lastChance) 在MS.Internal.Data.DataBindEngine.Run处(对象参数) 位于System.Windows.Threading.ExceptionWrapper.InternalRealCall(委托回调、对象参数、Int32 numArgs)
在System.Windows.Threading.ExceptionWrapper.TryCatchWhen(对象源、委托回调、对象参数、Int32 numArgs、委托catchHandler)

中,问题在于值是一个对象数组。如果要将成员转换为字符串类型,请使用:

string value1 = values[1].ToString();


您应该指定错误所在的行。我想知道这是否像
values[1]
实际上不是字符串这样简单,因此第一行的强制转换失败。请参阅。也许你的装订错了。
string value1 = values[1].ToString();
string value1 = Convert.ToString(values[1]);