Я сделал библиотеку классов netstandard. Я ориентируюсь на нетстандарт 1.6. Мой csproj выглядит так:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>netstandard1.6</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Runtime" Version="4.3.0" />
<PackageReference Include="System.Runtime.Serialization.Primitives" Version="4.3.0" />
<PackageReference Include="System.Runtime.Serialization.Xml" Version="4.3.0" />
</ItemGroup>
</Project>
И у меня есть WPF-проект, в котором я ссылаюсь на эту dll. Я могу использовать классы netstandard dll в С#. Я могу использовать их и в xaml. Я получаю даже интеллект для них. Но дизайнер xaml говорит, что мой xaml недействителен. Я могу скомпилировать решение, я могу запустить приложение. Во время работы все ок. Но дизайнер не может с ним работать.
Класс Person выглядит так:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
using System.Text;
namespace DS.Publications.Common
{
[DataContract(Namespace = Constants.NamespaceConstants.DataContractNamespace)]
public class Person : INotifyPropertyChanged
{
private string _Title = string.Empty;
[DataMember]
public string Title { get { return _Title; } set { Set(ref _Title, value); } }
private string _ForeName;
[DataMember]
public string ForeName { get { return _ForeName; } set { Set(ref _ForeName, value); } }
private string _LastName;
[DataMember]
public string LastName { get { return _LastName; } set { Set(ref _LastName, value); } }
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private bool Set<T>(ref T field, T value, [CallerMemberName] string propertyName = null)
{
if (field == null || !field.Equals(value))
{
field = value;
this.OnPropertyChanged(propertyName);
return true;
}
return false;
}
}
}
Вы знаете обходной путь или у вас есть идея, как я могу это исправить?