Silverlight 5 + RIA 到 Wpf 问题的转换

Conversion of Silverlight 5 + RIA to Wpf Issues

我们正在将 SL5+RIA 服务转换为 WPF 前端和 WCF 服务作为临时解决方案。 到目前为止,我们已经成功地将所有 SL 组件和库调整为 WPF 对应项。但是我们已经到了 Visual Studio 抛出一系列我们不了解其来源的构建错误的地步。

旧的 SL 解决方案由 VS 2015 14.0.25431.01 维护。它使用 SL5 和 .NET 4.0。在完全清理解决方案后,它也能正确构建。 新的WPF解决方案是用VS 2019 16.11.15制作的,使用.NET 4.8.

我们在某些用户控件上遇到的 3 个错误是

XDG0036 “Key”属性只能用于包含在“IDictionary”中的元素。 此错误指向 xaml 代码的第 1 行,即用户控件本身。

<UserControl
    x:Class="Inspectieprogramma.UserControls.DetailsInspfreq"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
    xmlns:converters="clr-namespace:Inspectieprogramma.Converters"
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    xmlns:cmdExtras="http://www.galasoft.ch/mvvmlight"
    xmlns:helpers="clr-namespace:Inspectieprogramma.Helpers"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
>

XDG0040 属性“资源”只能设置一次。 此错误指向我们资源标记的开头, 但只有一个资源声明。

<UserControl ...>

    <UserControl.DataContext>
        <Binding Path="Inspectieprogramma" Source="{StaticResource Locator}" />
    </UserControl.DataContext>
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Inspectieprogramma;component/Styles/RadDatetimePickerStyle.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
...
<DataTemplate/>, <ControleTemplate/> and <Style/> definitions
...
    </UserControl.Resources>
<Border>
// All contents
</Border>
</UserControl>

XDG0047 无法分配指定的值。应为以下类型:“ResourceDictionary”。 与 XDG0036 一样,此错误再次指向代码的第 1 行。

氪, 伊曼纽尔

您需要将 DataTemplate、ControleTemplate 和 Style 定义放在您声明的 ResourceDictionary 中,而不仅仅是在 UserControl.Resources 标记中:

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Inspectieprogramma;component/Styles/RadDatetimePickerStyle.xaml" />
        </ResourceDictionary.MergedDictionaries>

        ...
        DataTemplate, ControleTemplate and Style definitions
        ...
    </ResourceDictionary>
</UserControl.Resources>