小编And*_*ita的帖子

推迟对Knockout中所有计算属性的评估?

我试图为我的所有视图模型创建一个基类,所以我可以检查root-vm上的"isDirty"并检查整个vms树(同时避免循环依赖).

执行此操作时,我意识到ko-properties的顺序非常重要,因为计算属性根据创建属性时存在的其他属性来设置其订阅.因此,如果我将一个像下面的那样的isDirty-computed放在一个基类中,它总是会在它所依赖的属性之前进行初始化.无论如何,为了缩短它,我注意到我可以使用deferEvaluation来解决这个问题.

我的问题是:

在所有计算属性上使用deferEvaluation是否有任何缺点?为什么默认情况下这种行为是正确的?我什么时候需要它设置为假?

我可以这样做是否更好?有关改进或以其他方式进行的任何建议吗?

或者,有没有办法显式禁用计算属性的初始化,直到创建具有其所有属性的整个对象,然后以某种方式运行它.我的意思是对我来说唯一的问题是订阅是在所有属性到位之前设置的.

注意:我正在使用KO Lite Tools进行脏跟踪

function ViewModel() {
    var self = this;
    self.isDirty = ko.computed(function () {
        for (var p in self) {
            if (self[p].isDirty) {
                if (self[p].isDirty()) return true;
            }
            else if (self[p].subscribe && self[p].push) { // assuming ko.observableArray
                for (var i = 0, j = self[p]().length; i < j; i++) {
                    if (self[p]()[i].isDirty) {
                        if (self[p]()[i].isDirty()) return true;
                    }
                }
            }
        }
        return false;
    }, this, { deferEvaluation: true });
}
Run Code Online (Sandbox Code Playgroud)

注意:注意,如果我有另一个依赖于isDirty的计算属性,则此代码将失败.这有点令人期待,但也很不幸.如果我可以在创建对象后延迟并强制所有订阅,那将是很棒的.

knockout.js

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

如何在保存时自动更新Entity Framework 4中实体的Modified属性?

我在VS2010,POCO和模型优先方法中使用EF4.

我的实体具有以下属性:Id:Guid,Name:String,Created:DateTime,Modified:DateTime,Revision:Int32.

我创建我的实体,设置名称并使用EF4上下文将其保存到数据库.这应该将Id设置为新的Guid(与Identity-SGP一起使用),Created设置为now,Modified left as null,Revision设置为0.我检索实体,更改名称并再次保存.这次Modified-value应设置为now,revision应为1.

如何使用EF4与EDMX设计师最好地完成此操作?

更新:

这是我最终使用的:

public override int SaveChanges(System.Data.Objects.SaveOptions options)
{
    foreach (ObjectStateEntry entry in ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified).Where(e => e.Entity is EntityBase))
    {
        EntityBase entity = entry.Entity as EntityBase;
        if (entry.State == EntityState.Added)
        {
            entity.Version = new Version() { Major = 1, Minor = 0, Revision = 0 };
            entity.Created = DateTime.Now;
            if (OperationContext.Current != null) entity.CreatedBy = OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;
        }
        else if (entry.State == EntityState.Modified)
        {
            entity.Version.Revision++;
            entity.Modified = DateTime.Now;
            if (OperationContext.Current != null) entity.ModifiedBy = …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework entity-framework-4 ef-model-first

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

具有相同扩展名但内容不同的文件的不同图标?

我已将某个基于xml的文件类型(.xmlentity)与我的应用程序(.net)相关联,并且我希望根据这些文件的内容(根元素名称)使用不同的图标.

<note xmlns="mynamespace"></note> 应该有一种图标和

<notebook xmlns="mynamespace"></notebook> 应该有另一个.

没有不同的文件扩展名,这有可能吗?

如果它只在Windows 7上工作,那就是它的关键.

.net icons file windows-7

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

.NET中的包关系的目的是什么?

.NET中的包关系(ZipPackage)究竟是什么?我知道什么是包,但我无法理解关系的目的.你能举例说明我什么时候想要使用它们以及它们有什么用处吗?

.net c# package relationship

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

WPF:StackPanel与FirstChildFill?

我想要一种逻辑和简单的方法来生成一个布局,其中一个控件集要填充,其余的要停靠.我可以用:

<DockPanel LastChildFill="True">
  <Button Content="3" DockPanel.Dock="Bottom" />
  <Button Content="2" DockPanel.Dock="Bottom" />
  <Button Content="1" />
</DockPanel>
Run Code Online (Sandbox Code Playgroud)

但它的使用不是很直观.我也可以这样做:

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="*" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
  </Grid.RowDefinitions>
  <Button Content="1" Grid.Row="0" />
  <Button Content="2" Grid.Row="1" />
  <Button Content="3" Grid.Row="2" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

但它也有很多xaml.我真正想要的是这样的:

<StackPanel Fill="None|First|Last">
  <Button Content="1" />
  <Button Content="2" />
  <Button Content="3" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

如何在不必像DockPanel那样反转项目而不使用固定数量的行和附加属性的情况下实现这一点?

c# wpf layout fill

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

基本文件版本diff算法

我正在寻找一个解决方案来比较同一文件的两个版本,以获得变化/差异的表示.

c# diff file version

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

.NET:将剪贴板图像保存为 PNG 失败

我在将剪贴板图像保存为 png 时遇到了一个奇怪的问题。使用 prtscr 或截图工具截取屏幕截图时,它与 Clipboard.GetImage() 和 PngBitmapEncoder 一起工作正常。但是当从 Paint 复制图像并执行相同操作时,我得到了一个空图像。至少在尝试查看时它看起来是空的,尽管它似乎包含有效的 PNG-image-data。使用 Jpeg 编码器时,它工作正常。PNG 和 Paint 有什么问题?和透明度有关系吗?

更新 澄清:我从剪贴板成功提取图像。如果图像最初是从 Paint 复制的,我就无法使用 PNGEncoder 将其保存到光盘。我可以使用 JpegEncoder 保存绘画剪贴板图像……但我想使用 PNG。

BitmapSource source = Clipboard.GetImage();
PngBitmapEncoder enc = new PngBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(source));
enc.Save(stream);
Run Code Online (Sandbox Code Playgroud)

上面的代码生成一个包含不可见内容的图像文件,根据查看器(从画图复制时,ctrl-c 时)变成全黑或全白。这让我认为它与透明度有关......

.net clipboard png jpeg paint

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

如何在 Docker .NET Core Web 应用程序中保存数据?

我无法理解如何处理使用 Docker 运行的 WebApi 应用程序中的数据。

在我的应用程序中,用户可以上传存储如下的文件:

~\App_Data\accounts\user123\files\<sha256>.bin

在不配置任何卷的情况下,带有我的应用程序映像的 Docker 容器似乎工作正常并且写入文件没有任何问题。

现在我想进行配置,以便文件最终位于我可以明确指定的位置,而不是位于默认的 docker 卷文件夹内。

我想我需要创建一个卷映射?

我尝试创建一个文件夹并将其映射到“/App_Data”。它仍然像以前一样工作,但我仍然没有在该文件夹中看到任何文件。

该文件夹的写入权限是否有问题?如果没有访问权限,Docker 会回退并写入默认卷吗?

哪个用户/组应该具有此文件夹的写入权限?有“docker”用户吗?

我在 Synology NAS 上运行此程序,因此我仅使用带有“添加文件夹”按钮的标准 Docker UI。

这是我尝试过的文件夹:

在此输入图像描述

synology docker docker-volume asp.net-core

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

WPF:如何与非活动窗口进行交互?

是否可以从另一个窗口与非活动窗口进行交互?我想将一个文本框聚焦在窗口中而不使其处于活动状态,然后向其发送击键和鼠标事件.似乎可以使用SendMessage将消息发送到非活动窗口,但是是否可以将文本框聚焦在窗口中并向其发送按键,而不会使窗口处于活动状态?

.net c# wpf sendmessage

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

WPF-Grid如何实现SharedSizeGroup行为?

我试图弄清楚Grid如何在列和行中进行大小共享.我正在用反射器查看网格代码但找不到任何命中.共享/行共享大小应该首先获得所需的大小,然后再次使用最大找到的大小进行测量,以获得相同的大小,以避免被排除在编排通道中,如果我没有弄错的话.但我无法使用Reflector找到任何与大小共享的代码.有人可以解释一下大小共享应该如何在一个自定义面板类中大致实现,以便进行测量和安排?

wpf custom-controls

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