C#WPF:从SourceSafe恢复项目后获取自定义绑定错误(转换器属性未知)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#WPF:从SourceSafe恢复项目后获取自定义绑定错误(转换器属性未知)相关的知识,希望对你有一定的参考价值。

我已经在这个C#项目上工作了几个月了,而且它总是有一个自定义绑定类只是为了让一些属性更快一点:

namespace AutoLogic_GT
{
    public class BindingEx : Binding
    {
        public BindingEx()
        {
            IsAsync = true;
        }
    }

    public class BindingEx2Way : Binding
    {
        public BindingEx2Way()
        {
            Mode = BindingMode.TwoWay;
        }
    }

    public class BindingExReadOnly : Binding
    {
        public BindingExReadOnly()
        {
            Mode = BindingMode.OneWay;
        }
    }
}

我在我的XAML代码中使用以下方法调用它:

<UserControl.Resources>
    <local:BoolValueConverter x:Key="boolConverter" />
</UserControl.Resources>

<CheckBox Grid.Column="1" Grid.Row="1" Style="{StaticResource BasicCheckBox}" VerticalAlignment="Center" IsChecked="{local:BindingEx Path=DsBuyer.FirstTimeBuyer, TargetNullValue=False, Converter={StaticResource boolConverter}}" />

转换器代码也很简单:

public sealed class BoolValueConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value.ToBool();
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value.ToBool();
    }
}

它一直工作得很好,甚至在我的构建机器上,它仍然可以正常工作,但就在昨天我不得不更换我的硬盘并从TFS下载所有最新的源代码,一切看起来都很好,所有的代码都是相同的构建服务器,但在我的开发服务器上,我无法编译代码。我一直收到错误:

错误解析标记扩展时遇到类型'MS.Internal.Markup.MarkupExtensionParser + UnknownMarkupExtension'的未知属性'Converter'。第39行位置114。

除了Path之外,每个调用其他属性的人都会得到同样的错误。

即 -

错误解析标记扩展时遇到类型“MS.Internal.Markup.MarkupExtensionParser + UnknownMarkupExtension”的未知属性“FallbackValue”。

解析标记扩展时遇到类型“MS.Internal.Markup.MarkupExtensionParser + UnknownMarkupExtension”的错误未知属性“TargetNullValue”。

等等...

我当然必须重新安装Visual Studio 2017 CE并且我在更换硬盘之前恢复了我的版本,因为我总是保持VS最新,但似乎其他东西可能会丢失或过时或者也许是一个不匹配或过时的NuGet编译器软件包或其他什么东西,因为它在以前工作了几个月并且仍然继续工作并在构建机器上正常编译时代码本身是坏的没有意义。

任何人都知道我可以检查哪些可能让我继续这个?唯一的选择是返回所有代码并摆脱自定义绑定(如果这甚至是真正的原因),但这需要几天时间才能完成,因为这个项目中有数千个绑定。

谢谢!

答案

好的。如所怀疑的那样,根本没有描述的问题。在我的例子中,事实证明其中一个表单引用了一个程序集(PresentationFramework.Classic),该程序集由于某种原因未添加到项目中,并且由于无法编译而导致传播的错误集从上到下。

 xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic"

有时可以在对接WPF调试中遇到麻烦。

以上是关于C#WPF:从SourceSafe恢复项目后获取自定义绑定错误(转换器属性未知)的主要内容,如果未能解决你的问题,请参考以下文章

如何从自定义用户控件 WPF、C# 中的枚举自定义属性中获取值?

使用 WPF 成功连接后无法从 Access 数据库获取数据

WPF MaterialDesignInXamlToolkit锁屏恢复后页面冻结的问题

C#/WPF让程序开机自动启动

从 Sourcesafe 切换 - 在产品中寻找啥

从C#中的WPF组合框或文本框获取文本