小编Joe*_*Joe的帖子

WPF DataGrid 不显示某些列中 DataTable 的值

我有一个程序对 CSV 文件进行一些处理,并生成一个 DataTable 作为输出。我将其绑定到 DataGrid,如下所示:

<DataGrid Name="GridTable" ItemsSource="{Binding OutputData}" />
Run Code Online (Sandbox Code Playgroud)

一切似乎都运转良好。DataTable 已生成,DataGrid 已更新。但令人费解的是,列(Double 类型)似乎没有显示其数据。第一列(int 类型)工作正常: 数据网格

当我仔细检查 DataTable 结构时,它都在那里,并且类型都正确。我没有例外:

数据表

数据绑定显然可以正常工作,因为它显示了列并且第一列中具有正确的值。

以前有人遇到过这个吗?干杯

c# wpf datatable datagrid

5
推荐指数
1
解决办法
2597
查看次数

"该类型不包含任何可访问的构造函数" - 具有无参数构造函数

我正在尝试将类加载为静态资源:

<UserControl.Resources>
    <myControls:HelpTip x:Key="NavagationHT" Message="Test help tip message for navagation" />
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)

我收到错误"类型HelpTip不包括任何可访问的构造函数".但是,该类是公共的,并且具有应该可访问的无参数构造函数:

public class HelpTip : PropertyChangedBase
{
    ...

    public HelpTip()
    {
        ID = Guid.NewGuid();
        HelpTipManager.AddHelpTip(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有人知道可能导致此错误的任何其他内容?

编辑:现在已经解决了.我不确定如何或为什么,也许在其他地方有一些问题导致代码查找旧版本没有无参数构造函数?

c# wpf

5
推荐指数
1
解决办法
4750
查看次数

使用实时整形的PresentationFramework中的"对象引用未设置为对象的实例"

我在LifeShaping过滤的PresentationFramework中得到一个空引用:

在此输入图像描述

堆栈跟踪没有给我很多线索:

   at System.Windows.Data.ListCollectionView.RestoreLiveShaping()
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, …
Run Code Online (Sandbox Code Playgroud)

c# wpf collectionviewsource

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

WPF Canvas 上没有 Canvas.ZIndex 或 SetZIndex() 属性

我正在尝试更改 WPF 画布上组件的 Z 顺序,但它似乎并不作为 XAML 属性或方法存在于后面的代码中。

这是我的 XAML:

<UserControl x:Class="FrontendUI.Controls.RadialTracker"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:FrontendUI.Controls"
         mc:Ignorable="d" 
         d:DesignHeight="500" d:DesignWidth="500">
<Grid >
    <Canvas x:Name="TrackerCanvas">
    </Canvas>
</Grid>
Run Code Online (Sandbox Code Playgroud)

起初我试图以编程方式执行此操作:

在此处输入图片说明

然后我尝试使用 XAML 添加一个路径并设置 Canvas.ZIndex,它也不存在。虽然有 Panel.ZIndex,但我假设这是指 UI 中更高的内容(网格或用户控件本身?)

在此处输入图片说明

不知道如何继续。有谁知道为什么会这样?

wpf canvas

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

Lodash isEqualWith 与定制器不检查字段

我正在尝试使用 lodash 进行忽略未定义值的相等比较。

我希望以下内容起作用:

console.log(
  isEqualWith(request.body, actualRequest.body.json, (a, b) => {
    console.log(a, b, a === undefined && b === undefined ? true : undefined
    );
    return a === undefined && b === undefined ? true : undefined;
  })
);
Run Code Online (Sandbox Code Playgroud)

但是,控制台输出在(整个对象的)“第一次”比较时失败,即使定制程序返回未定义。这是输出:

{ item1: undefined, item2: 'test'} { item2: 'test' } undefined
false
Run Code Online (Sandbox Code Playgroud)

除了第一个对象,它从不比较任何东西。我希望输出如下:

{ item1: undefined, item2: 'test'} { item2: 'test' } undefined
undefined undefined true
'test' 'test' undefined
true
Run Code Online (Sandbox Code Playgroud)

因为,假设自定义程序在第一次检查时返回 undefined,那么它会遍历对象的字段并对这些字段执行自定义程序检查。

javascript lodash

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

解析“边界半径”值时出错。宣言落空。(和别的)

我有一个超级简单的网站,我正在尝试使用 jquery。我有一个 CSS 样式表,但有些属性被忽略了。例如,我正在设置 padding 和 border-radius 属性。我检查了浏览器(firefox,虽然chrome是一样的):

解析“填充”值时出错。宣言落空。样式表.css:26:12

解析“边界半径”值时出错。宣言落空。样式表.css:28:15

解析“边界半径”值时出错。宣言落空。样式表.css:33:15

解析“宽度”值时出错。宣言落空。样式表.css:40:7

解析“高度”值时出错。宣言落空。

甚至宽度和高度,我实际上已经成功地为其他一些 div 设置了!它看起来完全是随机的,有些属性只是没有被解析,例如边界半径。

所以结果(下面的片段)看起来像这样: 在此输入图像描述

google.load('visualization', '1', {packages: ['corechart', 'line']});
google.setOnLoadCallback(drawBasic);

$(document).ready(function() {
   $('.square').mouseenter(function() {
       $(this).animate({
           width: '+=30px'
       });
   });
   $('.square').mouseleave(function() {
       $(this).animate({
           width: '-=30px'
       });
   });
   $('.square').click(function() {
       $(this).toggle(1000);
   });
   
   var size = 10;
   var graphData = [new Array(size),new Array(size)];
   
   var column1 = graphData[0];
   var column2 = graphData[1];
   
   column1[0] = "Data1";
   column2[0] = "Data2";
   
   for (i = 1; i < column1.length; i++) {
	   column1[i] = i;
	   column2[i] …
Run Code Online (Sandbox Code Playgroud)

css

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

Websocket的性能严重问题-每条触发Angular变化检测的消息

我有一个网络套接字,目前正在以每秒约45条的速度流式传输消息。在这个水平上,它会完全杀死铬。浏览器窗口中的所有功能均已锁定。

我缩减了实现以尝试查找此问题的根本原因,怀疑这可能是我处理这些消息的方式(或Angular中的更新/更改检测)存在问题。

但是现在我有了最简单的websocket实现,可以得到:

this.socket = new WebSocket('ws://localhost:5000/ws');

let i = 0;
this.socket.onmessage = (e: MessageEvent) => {
  i++;
  if (i % 100 === 0) {
    console.log('recieved' + i);
  }
};
Run Code Online (Sandbox Code Playgroud)

这是在Angular Injectable中,但没有任何交互作用。

它每100条消息就会将其写入控制台。这仍然会杀死100%CPU使用率的浏览器,在我停止消息流之前,大部分时间它甚至都不会输出到控制台,然后一切都赶上了,并喷出了几行“收到的x00”消息。

消息本身是JSON,如下所示:

{
  "Topic":"2a736d15-a2fe-43b2-8e8b-ee888f15a53a","Type":1,
  "Message": {
     "Value":2,
     "Timestamp":"2017-06-05T14:46:21.615062+01:00"
   }
}
Run Code Online (Sandbox Code Playgroud)

它们通常约为126个字符。

我以为websockets每秒可以处理成千上万条消息,但是我在Google上找不到任何明智的指标,这听起来像是不合理的性能吗?

我还签入了CPU事件探查器。当一切都被锁定时,这只是一堵电话,所以我每秒将其拒绝为一条消息:

在此处输入图片说明

深入研究这些尖峰之一(每条消息都会发生!):在此处输入图片说明

我在其中一个位置上抛出了一个断点,而且似乎每当触发websocket时Angular都会在做某事,这与Zones有关(这是我的零经验!):

堆栈中的第一件事是Websocket本身上的ZoneTask.invoke,但是随后触发了NgZone,最终,一个非常昂贵的更改/更新链被称为:

在此处输入图片说明

这一切怎么可能发生?订阅websocket的7行代码完全独立于Angular的更改检测,对吗?他们没有更改绑定到任何组件的任何值。他们唯一的联系是他们坐在一个内部的方法中@Injectable()

websocket angular

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

Git - 变基到主人不做任何事情

我创建了一个用于实验的分支。我已经决定这是我想要采取的方向,所以想将更改放入 master 中。

我不想合并,我更喜欢 rebase,因为这听起来正是我想要的(就像我一直在使用 master 一样)。

查看文档,看起来很简单(这是文档中的说明):

但是,还有另一种方法:您可以采用 C4 中引入的更改补丁并将其重新应用到 C3 之上。在 Git 中,这称为变基。使用 rebase 命令,您可以获取在一个分支上提交的所有更改并在另一个分支上重放它们。

在此示例中,您将运行以下命令:

$ git checkout experiment
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: added staged command
Run Code Online (Sandbox Code Playgroud)

在我的情况下,“实验”是已经签出的分支“非规范化”(从我的控制台输出):

$ git status
On branch denormalized
Your branch is up-to-date with 'origin/denormalized'.
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)

现在,我打电话git rebase master

$ git rebase master
Current branch denormalized is up to date.
Run Code Online (Sandbox Code Playgroud)

好的,所以根据文档,这不是我所期望的。两个分支似乎也没有变化:

在此处输入图片说明

master …

git

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

自定义指令:无法绑定到指令,因为它不是元素的已知属性

我正在尝试创建一个指令,允许我声明变量(我以前一直使用 ngIf 来执行此操作,但我不喜欢这样做)。基于这里的第二个答案:如何在 Angular2 中的模板中声明变量

我有一个指令

import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';

@Directive({
  selector: '[appVar]',
})
export class VarDirective {
  @Input()
  set ngVar(context: any) {
    (this.context as any).$implicit = (this.context as any).ngVar = context;
    this.updateView();
  }

  context = {};

  constructor(private vcRef: ViewContainerRef, private templateRef: TemplateRef<any>) { }

  updateView() {
    this.vcRef.clear();
    this.vcRef.createEmbeddedView(this.templateRef, this.context);
  }
}
Run Code Online (Sandbox Code Playgroud)

我已经声明并从我的共享模块导出:

@NgModule({
  imports: [
    CommonModule,
    RouterModule,
    FormsModule,
    ReactiveFormsModule
  ],
  declarations: [
    ...
    VarDirective
  ],
  exports: [
    ...
    VarDirective
  ]
})
export class …
Run Code Online (Sandbox Code Playgroud)

angular

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