我已经成功地使用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)
但是,为了整洁,我宁愿将图表作为嵌入式资源.我想你不能拥有一切!
我正在尝试在 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。
我在Umbraco的先前版本中看到了一些例子(即5),这似乎相对简单.例如,请参阅此stackoverflow问题.
理论上,我可以在选择要使用的节点时使用属性HasAccess
或IsProtected
节点,或方法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 .
似乎我想要实现的目标很简单,但我正以错误的方式接近它.有人请指出我的方式的错误!
我希望这里有一个简单的答案,这可能是由于我对异步操作的误解...
我有一种方法可以手动启动,也可以在程序加载时自动启动。当手动调用(按下按钮)时,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()
方法。如果手动调用,一切都会按预期进行。 …
我不确定这是否可行,甚至不知道如何正确地说出这一点.
我正在创建一个我想要与离线应用程序一起使用的新webAPI.应用程序连接到api(在脱机之前)并下拉字段列表以生成动态表单.我想向客户提供一个字段列表.简单来说,这可能是id
和description
.
但是,为了完全按照我的意愿生成表单,我可能想要提供一个字段"类型",如System.DateTime
或System.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
我希望能够实现的.然后,我可以让我的表单生成一个类型为日期的字段.例如,相同的可能适用于字符串.