小编dar*_*ixx的帖子

将图表模板应用于Excel图表

我已经成功地使用WPF在Excel中创建了一个图表.我可以使用以下方法将库存Excel布局应用于图表:

xlChart.ApplyLayout(i);
Run Code Online (Sandbox Code Playgroud)

其中xlChart是我的图表,'i'代表我选择的布局.

但是,我想比这更进一步,并应用我自己的自定义图表类型.我在Excel中创建了一个图表类型,并将其保存为crtx文件.我已将此作为嵌入式资源添加到我的项目中,并尝试将其应用于Excel图表,如下所示:

var file = new Uri("pack://application:,,,/Resources/Templates/line.crtx");
xlChart.ApplyChartTemplate(file.AbsoluteUri);
Run Code Online (Sandbox Code Playgroud)

然而,这失败了

HRESULT_FAIL
Run Code Online (Sandbox Code Playgroud)

我可能没有正确引用模板,所以希望那里的人能够提供帮助!

编辑:

我设法找到了解决方法.我可以将模板复制到输出目录并使用以下方法引用它:

var path = Path.GetFullPath("Resources/Templates/line.crtx");
xlChart.ApplyChartTemplate(path);
Run Code Online (Sandbox Code Playgroud)

但是,为了整洁,我宁愿将图表作为嵌入式资源.我想你不能拥有一切!

c# wpf excel-interop

5
推荐指数
0
解决办法
1344
查看次数

Azure Api 管理将 XML 转换为入站 JSON 策略

我正在尝试在 API 中定义一个策略来将 XML 转换为 JSON。我们的后端 API 目前仅支持 JSON,但我希望客户端能够发布 XML。我可以成功地将 JSON 转换为 XML 作为出站策略,但入站策略只会导致空帖子。

工作出境政策为:

<outbound>
    <base />
    <json-to-xml apply="content-type-json" consider-accept-header="true" />
</outbound>
Run Code Online (Sandbox Code Playgroud)

入站策略实际上是相反的:

<inbound>
    <xml-to-json kind="direct" apply="content-type-xml" consider-accept-header="true" />
</inbound>
Run Code Online (Sandbox Code Playgroud)

我创建了一个指向 requestbin 实例的新测试 API,以便我可以检查该请求。我在 postman 中创建一个简单的 XML 请求并将 Content-Type 设置为 text/xml,但 requestbin 中的请求始终显示空帖子。

我尝试使用下面@miao-jian 的有用评论进行调试。跟踪显示策略已应用,但内容长度已被删除。我想知道这是否是根本原因?

2跟踪日志中的相关条目:

{"source":"xml-to-json", "timestamp":"2015-09-08T19:51:01.5919446Z", elapsed":"00:00:00.2116541", "data":"XML-to-JSON policy was applied. Original Content-Length header was removed as its value was invalidated. Content-Type header was set to 'application/json'."}
Run Code Online (Sandbox Code Playgroud)

在这里您可以看到策略已应用,但请求中不存在 json。

azure azure-api-management

4
推荐指数
1
解决办法
5119
查看次数

Umbraco 7隐藏导航节点用户无权访问

我在Umbraco的先前版本中看到了一些例子(即5),这似乎相对简单.例如,请参阅此stackoverflow问题.

理论上,我可以在选择要使用的节点时使用属性HasAccessIsProtected节点,或方法WhereHasAccess.

我到目前为止的代码是:

var nodes = @CurrentPage.AncestorsOrSelf(1).First().Children;
Run Code Online (Sandbox Code Playgroud)

这让我得到了页面列表,没问题.但是,我正在努力过滤页面列表,以便登录用户只能看到他们有权访问的内容,并且公共访问者看不到受保护的页面.

V5代码表明这是可能的:

var nodes = @CurrentPage.AncestorsOrSelf(1).First().Children.WhereCanAccess();

但这会导致错误:

'Umbraco.Web.Models.DynamicPublishedContentList' does not contain a definition for 'WhereCanAccess'

在最新发布的版本剃须刀的cheatsheet为一把umbraco表明,HasAccess()IsProtected()有两种方法都可用,但使用这两种,当我得到空值,例如:

@foreach(var node in nodes.WhereCanAccess()) {
    <li>@node.Name / @node.IsProtected / @node.IsProtected() / @node.HasAccess() / @node.HasAccess </li>
}
Run Code Online (Sandbox Code Playgroud)

对所有测试值(例如@node.IsProtected)返回null .

似乎我想要实现的目标很简单,但我正以错误的方式接近它.有人请指出我的方式的错误!

razor umbraco7

3
推荐指数
1
解决办法
4502
查看次数

异步等待执行顺序-代码仅在逐步执行/调试时才有效

我希望这里有一个简单的答案,这可能是由于我对异步操作的误解...

我有一种方法可以手动启动,也可以在程序加载时自动启动。当手动调用(按下按钮)时,async方法工作完美。但是,当自动加载该方法时,似乎只是跳过该方法的主要“ await”部分而不执行任何工作,而是直接跳到最后。

整个过程从以下方法开始:

private void StartBatch()
{
    var batchSize = (int)BatchSizeSlider.Value;

    if (_config.AutoStart)
    {
        ExecutionLogAddItem(string.Format("Auto batch processing started (batch size: {0})", batchSize.ToString()));

        Task.Factory.StartNew(async () =>
        {
            await BatchTransfer(batchSize);
            CompleteBatch();
        });
    }
    else
    {
        var start = ConfirmStartBatch();
        var doBatch = start.ContinueWith(async (continuation) =>
        {
            //start task
            if (start.Result == true)
            {
                ExecutionLogAddItem("Batch processing started.");
                ExecutionLogAddItem(string.Format("Batch size set at {0}", batchSize.ToString()));
                await BatchTransfer(batchSize).ContinueWith((x) => CompleteBatch());
            }
            else
            {
                ExecutionLogAddItem("Batch processing aborted.");
            }
        });    
    }
}
Run Code Online (Sandbox Code Playgroud)

如果_config.AutoStart为true,则BatchTransfer方法似乎不执行任何操作,而是程序直接跳到该CompleteBatch()方法。如果手动调用,一切都会按预期进行。 …

.net c# async-await

2
推荐指数
1
解决办法
1773
查看次数

.NET Class属性作为对象,例如System.String

我不确定这是否可行,甚至不知道如何正确地说出这一点.

我正在创建一个我想要与离线应用程序一起使用的新webAPI.应用程序连接到api(在脱机之前)并下拉字段列表以生成动态表单.我想向客户提供一个字段列表.简单来说,这可能是iddescription.

但是,为了完全按照我的意愿生成表单,我可能想要提供一个字段"类型",如System.DateTimeSystem.String.是否有可能做到这一点?

在伪代码中,这可能是:

public class EntityType
{
    public Guid EntityTypeId { get; set; }
    public string Description { get; set; }
    public Object Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我可能想创建一个EntityType这样的:

EntityType entityType = new EntityType { 
    EntityTypeId = Guid.NewGuid(),
    Description = "Visit Date",
    Type = System.DateTime
};
Run Code Online (Sandbox Code Playgroud)

这是Type = System.DateTime我希望能够实现的.然后,我可以让我的表单生成一个类型为日期的字段.例如,相同的可能适用于字符串.

.net c#

2
推荐指数
1
解决办法
75
查看次数