如何使用来自另一个项目的枚举将单选按钮组绑定到枚举 属性?

How can I bind a radio button group to an enum property using an enum from another project?

所以我的解决方案中有 2 个项目。一个 class 库和一个 WPF 项目。 class 库“TemplateGeneratorLibrary”包含一个文件“Enums.cs”,我在其中定义我的枚举。

namespace TemplateGeneratorLibrary.Utilities
{
    public enum Genders
    {
        m,
        f
    }
}

我在我的 UI 项目中添加了对我的视图文件的以下引用。我仔细检查了 class 库的程序集名称确实是“TemplateGeneratorLibrary”并且与项目名称没有区别。

<UserControl x:Class="TemplateGeneratorUI.Views.MedicalExaminationView"
    xmlns:utilities="clr-namespace:TemplateGeneratorLibrary.Utilities;assembly=TemplateGeneratorLibary">

现在,我尝试使用 class 库中的枚举将单选按钮组绑定到视图模型中的 属性。

<RadioButton x:Name="PatientGenderMRadio"
    IsChecked="{Binding Path=Gender, Converter={StaticResource enumConverter}, ConverterParameter={x:Static utilities:Genders.m}}"

我收到错误“找不到类型 'Genders'。请注意,类型名称区分大小写。”

当我将枚举文件与视图放在同一个项目中时,一切正常。我怎样才能使用我的 class 库中的枚举让它工作呢?

如果您使用 .NET Standard,class 库也必须基于 .NET Standard。 而如果 .NET Framework 或 .NET Core class 库必须遵守它。

Class library namespace does not exist in WPF app despite project reference

When I put the enum file in the same project as the view everything works fine.

实际上可以从另一个项目中引入特定文件,而不必引入对该项目的引用或包含 dll。

诀窍是将所需的文件作为 link 包含到项目中。方法如下

  1. 在主项目中右键单击 select Add 然后 Existing Item...shift alt A.
  2. 浏览到在其他项目中找到的文件的位置和 select 文件。
  3. 一旦文件被 selected,然后在 Add 按钮上使用下拉箭头中的 select。
  4. Select Add as linkcommon 文件作为 link 添加到项目中。

这将提供对文件的访问权限就好像文件实际上在项目中,但文件实际位于其他地方。


这在必须跨越 CLR 边界的 Silverlight 中被广泛使用,但是模型和枚举之类的东西可以在两个项目中使用,而不必为文本类型副本引入另一个 CLR dll。