C# WPF valueconverter随机抛出;方法或操作未实现”的;重建后

C# WPF valueconverter随机抛出;方法或操作未实现”的;重建后,c#,wpf,C#,Wpf,我的wpf应用程序中有一个值转换器,它会导致生成的随机崩溃。有时应用程序正在工作,完全更改其他内容并重建项目可能会使整个应用程序停止工作,从而导致 未实现该方法或操作 如果我移除值转换器,应用程序每次都能正常工作。为了让它发挥作用,我有时必须多次清理和重建解决方案(或者从XAML中删除转换器并构建,然后再添加它并再次构建,有时也可以) 最让我烦恼的是,它有时能工作,但毫无理由,它只是在重建后停止工作 这是我的XAML <Window x:Class="Common.Cleanup.View

我的wpf应用程序中有一个值转换器,它会导致生成的随机崩溃。有时应用程序正在工作,完全更改其他内容并重建项目可能会使整个应用程序停止工作,从而导致

未实现该方法或操作

如果我移除值转换器,应用程序每次都能正常工作。为了让它发挥作用,我有时必须多次清理和重建解决方案(或者从XAML中删除转换器并构建,然后再添加它并再次构建,有时也可以)

最让我烦恼的是,它有时能工作,但毫无理由,它只是在重建后停止工作

这是我的XAML

<Window x:Class="Common.Cleanup.Views.CleanupView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:converters="clr-namespace:Common.Cleanup.Converters"
        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
        xmlns:cal="http://www.caliburnproject.org"
        mc:Ignorable="d">
    <Window.Resources>
        <converters:IconTypeConverter x:Key="IconConverter" />
    </Window.Resources>
        ...
        <TreeView x:Name="CleanItems" Grid.Row="1" Grid.Column="1" ItemsSource="{Binding CleanupItemList}" >

            <TreeView.ItemContainerStyle>
                <Style TargetType="{x:Type TreeViewItem}">
                    <Setter Property="Focusable" Value="false" />
                </Style>
            </TreeView.ItemContainerStyle>

            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Items}">
                    <StackPanel Orientation="Horizontal">
                        <Image Margin="0,0,3,0" MinWidth="16" MinHeight="16" Source="{Binding Path=IconType, Converter={StaticResource IconConverter}}" />
                        <CheckBox IsChecked="{Binding IsChecked}" />
                        <TextBlock Text="{Binding Name}" Margin="3,0,0,0" />
                    </StackPanel>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>
        ...
</Window>

我正在为x64平台构建一个调试配置的项目。

在图像绑定中添加
Mode=OneWay
,事情应该会变得更好

像这样:

<Image Margin="0,0,3,0" MinWidth="16" MinHeight="16" 
       Source="{Binding Path=IconType, Converter={StaticResource IconConverter}, Mode=OneWay}" />

这是因为在转换器的
ConvertBack
函数中,您要求它抛出异常。因此,每当它试图用UI元素的更改值更新source时,就会调用
ConvertBack
函数并抛出您看到的异常

编辑
我刚才在
ConvertBack
函数中看到了您的评论。我还是建议你试试我的答案。还可以尝试返回
NotSupportedException
,而不是返回
NotImplementedException
或null,查看错误消息是否更改。

为什么?OP似乎认为ConvertBack方法不是这里的原因。@Corentpane:他没有说过这样的话。另外,
方法或操作未实现
消息清楚地表明正在抛出
NotImplementedException
,这通常不是框架组件抛出的。他写道
//这不是问题所在。在
ConvertBack
方法中,我试图返回null,但没有任何差异。@corentpane:我错过了那个注释。我仍然相信他应该试试这个答案。我完全有理由相信正是这行代码导致了指定的异常。谢谢。但你的两个建议似乎都没有改变这个问题=(它仍然随机抛出相同的错误(
方法或操作未实现
),现在没有任何其他未实现异常的痕迹!
<Image Margin="0,0,3,0" MinWidth="16" MinHeight="16" 
       Source="{Binding Path=IconType, Converter={StaticResource IconConverter}, Mode=OneWay}" />