小编THX*_*138的帖子

WPF:扩展主题的样式 - StackOverflowException

除了皇家主题风格,我希望每个按钮都有5分的余量.

Window1.xaml:

<Window x:Class="_styles.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
  <Window.Resources>
    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/PresentationFramework.Royale;component/themes/royale.normalcolor.xaml" />
      </ResourceDictionary.MergedDictionaries>
      <Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
        <Setter Property="Margin" Value="5"/>
      </Style>
    </ResourceDictionary>
  </Window.Resources>
  <StackPanel>
    <Button Content="Button A"/>
    <Button Content="Button B"/>
  </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

它编译但我得到:

PresentationFramework.dll中出现未处理的"System.StackOverflowException"类型异常

public Window1() {
    InitializeComponent(); // <-- getting exception here
}
Run Code Online (Sandbox Code Playgroud)

没有例外细节,因为:

{无法计算表达式,因为当前线程处于堆栈溢出状态.}

wpf themes styles

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

如何为typescript编译器配置`baseUrl`?

我有一个使用模块构建的网站requireJS.我想在这个项目上开始使用TypeScript(1.8,Visual Studio 2015),并尝试重写其中一个模块.

目前我的模块如下:

// file: ProjectFoo/app/dashboard/viewProfile.js
define(["services/datasvc"], function (datasvc) {
    datasvc.getData(...).then(...);
});
Run Code Online (Sandbox Code Playgroud)

文件datasvc.js位于以下路径:ProjectFoo/services/datasvc.js

为了使datasvc.jsrequireJS 可以访问,我已经配置了以下路径(requireJS配置):

services - > ./services

重写我的模块后,我使用以下构造导入datasvc(注意:TypeScript编译器配置为使用amd模块结构).

import * as datasvc from "services/datasvc";
Run Code Online (Sandbox Code Playgroud)

但是这不起作用,因为TypeScript将其services/datasvc视为相对于当前文件的路径.但是,如果我按如下方式重写该import语句,那么TypeScript [compiler]会成功:

import * as datasvc from "../../services/datasvc";
Run Code Online (Sandbox Code Playgroud)

然而,这导致datasvc使用相对路径导入,即生成代码看起来像:

define(["require", "exports", "../../services/datasvc"]...
Run Code Online (Sandbox Code Playgroud)

这里的问题是我将不得不更改../要包含在模块路径中的数量,具体取决于我所在文件的嵌套深度.

问题: 有没有办法使用import * as datasvc from "services/datasvc"和以某种方式配置TypeScript来处理requireJS的相同方式?

typescript

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

C#:没有从Class <Child>到Class <Base>的转换

以下代码片段无法编译.出现以下错误:

无法将类型'Container <ChildClass>'隐式转换为'Container <BaseClass>'

class BaseClass {}
class ChildClass : BaseClass {}
class Container<T> where T : BaseClass {}
class Program {
    static void Main() {
        // why doesn't this work?
        Container<BaseClass> obj = new Container<ChildClass>(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

这是设计的吗?如果是,那是什么原因?

c# generics inheritance language-features language-design

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

JavaScript:将参数传递给onclick处理程序

我需要将额外的参数传递给onclick处理程序.我无法确定哪种方式"更好":

编辑:
上下文:我有一个表格,显示一个事件的名单.每行都有一个"删除"按钮.将recordId传递给delete-handler的更好方法是什么?

$('a.button').click(function() {
    var recordId = $(this).metadata().recordId;
    console.log(recordId);
});
...
<tr>...<a class='{recordId:1} button'>delete</a></tr>
<tr>...<a class='{recordId:2} button'>delete</a></tr>
Run Code Online (Sandbox Code Playgroud)

要么

function delete(recordId) {
    console.log(recordId);
}
...
<tr>....<a class='button' onclick='deleteRecord(1)'>Delete</a></tr>
<tr>....<a class='button' onclick='deleteRecord(2)'>Delete</a></tr>
Run Code Online (Sandbox Code Playgroud)

每种选择的优缺点是什么?

注:我用a.button作为一种习俗,CSS样式的按钮,但它不是表现为一个链接.

编辑:
如果你能论证提供的替代品的优点,我也会感谢替代解决方案.

javascript jquery

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

带有默认值的.net字典

我想要一个字典,它将返回不在字典中的任何键的指定值,如:

var dict = new DictWithDefValues("not specified");
dict.Add("bob78", "Smart");
dict.Add("jane17", "Doe");
Assert.AreEqual(dict["xxx"], "not specified");
Run Code Online (Sandbox Code Playgroud)

扩展System.Collections.Generics.Dictionary并覆盖TryGetValue不起作用,因为TryGetValue不是虚拟的.

从头开始重新实现字典(来自IDictionary <,>)是太多的努力.

扩展方法不会让我用默认值"初始化"字典.我希望字典的消费者认为密钥存在,而不仅仅是dict.GetOrDefault(key, "not specified");

.net dictionary

3
推荐指数
2
解决办法
4318
查看次数

ASP.Net MVC:获取没有键的查询值

我有网址:http : //site.com/page.aspx?update

如何检查该更新值是否存在?

HttpValueCollection将其视为具有null键的实体。我试过了:

var noKeyValues = Request.QueryString.GetValues(null);
if (noKeyValues != null && noKeyValues.Any(v=>v==update)) ...
Run Code Online (Sandbox Code Playgroud)

但它让我皱眉,因为 GetValues 的参数是用 [NotNull] 修饰的。

所以我最终做了:

    var queryValuesWithNoKey =
            Request.QueryString.AllKeys.Select((key, index) => new { key, value = Request.QueryString.GetValues(index) }).Where(
                    item => item.key == null).Select(item => item.value).SingleOrDefault();
    if (queryValuesWithNoKey != null && queryValuesWithNoKey.Any(v => v.ToLower() == "update")) live = true;
Run Code Online (Sandbox Code Playgroud)

不是最优雅的解决方法。有没有更好的方法从查询字符串中获取无键值?

asp.net-mvc query-string

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

使用链接标记(<a>)的href来标识操作

我将标签设置为按钮,并使用它代替<button><input submit>标签.

为了识别操作,我使用href属性,例如:

<a href='update'>Update</a>
<a href='delete'>Delete</a>
Run Code Online (Sandbox Code Playgroud)

然后使用jQuery:$('a [href ="update"]').click(function(){...});

它运作良好.当给定链接充当表单上的提交按钮时,我还使用href属性作为"operation"参数的值.

现在的问题是 - 搜索引擎会因为盲目链接而惩罚我吗?(我认同).
我该如何解决?用#update而代替?我不能使用id属性,因为可能有多个按钮执行相同的操作.

注意:点击处理程序可以使用类连接,这很方便.所以我宁愿不使用id多个按钮连接到同一个处理程序.

<!-- inside a form -->
<a href='update' class='submit-button'>Update</a>

<!-- inside $(function() { .. });
$('a.submit-button').click(function() {
    // 1. get href of the clicked link : href = $(this).attr('href');
    // 2. add <input hidden> to the form: <input type='hidden' name='operation' value='<href>'/>
    // 3. submit form : $(this).parents('form').submit();
});
Run Code Online (Sandbox Code Playgroud)

seo jquery

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

更改GridView的ColumnHeader的字体大小

是否有一种简单的方法来更改标题字体大小而不覆盖完全复制ColumnHeaderTemplate?

注意:不确定它是否相关,但我使用提供ColumnHeaderTemplate的应用程序主题(PresentationFramework.Royale).

wpf gridview themes styles templating

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

ASP.Net,母版页:每页样式表

这些是我的假设,这些是正确的吗?

  1. 使用CSS的布局优于使用表格.
  2. CSS应该在单独的文件中提取,而不是内联.
  3. CSS是从site.master中导入(链接)的,因此所有.css都导入(并应用于)所有.aspx页面.

鉴于此,我有一个包含一个母版页和两个.aspx页的项目.每个页面都有一个id为"records"的表.

问题:我可以为每个.aspx页面导入.css文件吗?

有没有更好的方法来在单个页面中范围 html元素?

html css asp.net master-pages

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

工作流服务在464条消息后停止响应

我在执行工作流程时遇到了一个特殊问题.
我已经尝试了我能想到的一切,现在需要一些想法.

这是我的配置:
1.在IIS 7中托管的WF4工作流服务(xamlx),并使用net.msmq/netMsmqBinding进行传输(MSMQ是事务性的).
2.没有使用工作流持久性.
3.我使用控制台应用程序客户端向工作流发送消息(每条消息创建新的工作流).4.每个工作流程如下:等待START消息 - >等待END消息(我只发送START消息).

如果我发送500条消息 - 464正确处理,但超过该消息,所有消息都转到lock_*队列,然后移动到毒性队列.我检查过Debug,Analytic事件日志,以及消息和跟踪svclogs这是我得到的最详细的消息:

System.TimeoutException,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089操作未在分配的超时00:00:30内完成.分配给此操作的时间可能是较长超时的一部分.at System.Runtime.AsyncResult.End [TAsyncResult](IAsyncResult结果)System.ServiceModel.Activities.Dispatcher.PersistenceProviderDirectory.LoadOrCreateAsyncResult.HandleReserveThrottle(IAsyncResult result)at System.Runtime.AsyncResult.AsyncCompletionWrapperCallback(IAsyncResult result)System.TimeoutException:The操作未在指定的超时00:00:30内完成.分配给此操作的时间可能是较长超时的一部分.at System.Runtime.AsyncResult.End [TAsyncResult](IAsyncResult结果)位于System.Runtime.AsyncResult.AsyncCompletionWrapperCallback(IAsyncResult结果)的System.ServiceModel.Activities.Dispatcher.PersistenceProviderDirectory.LoadOrCreateAsyncResult.HandleReserveThrottle(IAsyncResult result)

那时请求http://localhost/MyWebService?wsdl也失败了404.

如果我重新启动IIS - 一切都恢复正常,直到发送464条消息.

  1. 我在哪里可以找到更详细的日志?(我已将System.Diagnostics设置为max verbosity)
  2. 是464号魔法吗?
  3. 导致此Web服务锁定的原因是什么?

msmq workflowservice workflow-foundation-4

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