【问题标题】:How can I bind a radio button group to an enum property using an enum from another project?如何使用来自另一个项目的枚举将单选按钮组绑定到枚举属性?
【发布时间】:2021-07-15 08:57:20
【问题描述】:

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

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

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

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

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

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

我收到错误消息“找不到类型‘性别’。请注意,类型名称区分大小写。”

当我将枚举文件与视图放在同一个项目中时,一切正常。但是,如何使用我的类库中的枚举使其工作?

【问题讨论】:

    标签: c# wpf data-binding enums


    【解决方案1】:

    当我将枚举文件与视图放在同一个项目中时,一切正常。

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

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

    1. 在主项目中右键单击并选择Add 然后选择Existing Item...shift alt A
    2. 浏览到在其他项目中找到的文件所在的位置并选择文件。
    3. 选择文件后,在Add 按钮上使用下拉箭头中的选择。
    4. 选择Add as linkcommon 文件作为链接添加到项目中。

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


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

    【讨论】:

      【解决方案2】:

      如果您使用.NET Standard,则类库也必须基于 .NET Standard。 而.NET Framework或.NET Core类库是否必须遵守。

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

      【讨论】:

        猜你喜欢
        • 2014-10-14
        • 1970-01-01
        • 2011-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多