gpt4 book ai didi

c# - WPF 和 Workflow Foundation 不能一起工作

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:22 24 4
gpt4 key购买 nike

我有一个很奇怪的问题。我在 2012 年或 2013 年创建了 WPF 项目 VS 没关系。我使用.NET 4.5。

  1. 我向该项目添加了一个新事件(工作流类)。它的名字是 CustomActivity。
  2. 然后我添加一个具有附加属性的新类,示例如下:

    public class AttachedObject : DependencyObject
    {
    public static readonly DependencyProperty NameProperty = DependencyProperty.RegisterAttached(
    "Name",
    typeof(string),
    typeof(AttachedObject),
    new FrameworkPropertyMetadata(
    string.Empty,frameworkPropertyMetadataOptions.AffectsRender));

    public static void SetName(ContentControl element, string value)
    {
    element.SetValue(NameProperty, value);
    }

    public static string GetName(ContentControl element)
    {
    return (string)element.GetValue(NameProperty);
    }
    }
  3. 最后一步是以这种方式更改 MainWindow 类:

    public MainWindow()
    {
    InitializeComponent();
    var activity = new CustomActivity();
    }
    <Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:wpfApplication1="clr-namespace:WpfApplication1;assembly=WpfApplication1"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
    <ContentControl wpfApplication1:AttachedObject.Name="MainArea"/>
    </Grid>
    </Window>

问题是由于以下错误而无法编译:

Error 1 The type or namespace name 'CustomActivity' could not be found (are you missing a using directive or an assembly reference?) WpfApplication1\MainWindow.xaml.cs 13 32 WpfApplication1

CustomActivity 有一个默认的命名空间。在 obj 文件夹中生成了 CustomActivity.g.cs,所以我不知道发生了什么。它是 100% 可重现的。当我从 xaml 中删除使用 CustomActivity 或使用 AttachedObject 时,问题就消失了。

最佳答案

尝试替换这个:

xmlns:wpfApplication1="clr-namespace:WpfApplication1;assembly=WpfApplication1"

有了这个

 xmlns:wpfApplication1="clr-namespace:WpfApplication1"

您看到的错误是由于 WPF 应用程序中的一个“已知”问题,即从您所在的当前程序集中引用 clr 命名空间的 xaml 命名空间不需要完整的程序集限定名称。如果您要声明一个引用另一个程序集的 clr 命名空间的 xaml 命名空间,则必须指定全名(使用 ;[assemblyname] 语法)。

Workflow Foundation 与它无关。

编辑:没有意识到这是一个 xaml 事件。但是,你仍然可以让它工作,也许,通过一些黑客攻击,但我不推荐它。出现该错误的原因是 VS 在为 WPF(页面)创建 xaml 工件时使用不同的代码生成和构建操作:

System.Windows.Application.LoadComponent(this, resourceLocater);

以及在创建 xaml 事件 (XamlAppDef) 时:

 typeof(CustomActivity).Assembly.GetManifestResourceStream(resourceName);

如果您将 CustomActivity xaml 构建操作转换为 Page,整个过程将会编译 - 但我猜其他地方可能会被破坏......或者没有,谁知道呢。我的猜测是这两种 xaml 并不意味着在 VS WPF 应用程序项目模板中一起存在。但是您仍然可以在 WF 事件库中定义事件,这样您的事件也可以更轻松地重用于其他项目、WPF、控制台甚至服务。

关于c# - WPF 和 Workflow Foundation 不能一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25957717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com