javascript

java

python

c#

android

node.js

reactjs

c++

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

将实体框架与WPF数据绑定一起使用的最佳实践

我正在构建我的第一个真正的WPF应用程序(即,第一个打算供我以外的人使用的应用程序),而我仍在全神贯注地使用WPF做事的最佳方法。 这是一个使用还很新的Entity Framework的相当简单的数据访问应用程序,但是我无法在线找到很多指南,以找到将这两种技术(WPF和EF)一起使用的最佳方法。 所以我想我会抛弃我的方式,看看是否有人有更好的建议。

  • 我在SQL Server 2008中使用了EntityFramework。EF使我感到既复杂又复杂,并且还不成熟,但是Linq-to-SQL显然已经死了,所以我不妨使用该技术 MS似乎正在集中精力。

  • 这是一个简单的应用程序,因此(尚未)适合在它周围构建一个单独的数据层。 当我想获取数据时,我使用相当简单的Linq-to-Entity查询,通常直接从我的代码背后获取,例如:

    familyCVS.Source = familyOC;
    familyCVS.View.Filter = new Predicate<object>(ApplyFamilyFilter);
    familyCVS.View.SortDescriptions.Add(new System.ComponentModel.SortDescription("PrimaryLastName", System.ComponentModel.ListSortDirection.Ascending));
    familyCVS.View.SortDescriptions.Add(new System.ComponentModel.SortDescription("Tag", System.ComponentModel.ListSortDirection.Ascending));
    
  • Linq-to-Entity查询返回IOrderedQueryable结果,该结果不会自动反映基础数据中的更改,例如,如果我通过代码向实体数据模型添加新记录,则该新记录的存在不会自动反映在 引用Linq查询的各种控件。 因此,我将这些查询的结果放入ObservableCollection中,以捕获基础数据更改:

    familyCVS.Source = familyOC;
    familyCVS.View.Filter = new Predicate<object>(ApplyFamilyFilter);
    familyCVS.View.SortDescriptions.Add(new System.ComponentModel.SortDescription("PrimaryLastName", System.ComponentModel.ListSortDirection.Ascending));
    familyCVS.View.SortDescriptions.Add(new System.ComponentModel.SortDescription("Tag", System.ComponentModel.ListSortDirection.Ascending));
    
  • 然后,我将ObservableCollection映射到CollectionViewSource,这样我就可以进行过滤,排序等,而不必返回数据库。

    familyCVS.Source = familyOC;
    familyCVS.View.Filter = new Predicate<object>(ApplyFamilyFilter);
    familyCVS.View.SortDescriptions.Add(new System.ComponentModel.SortDescription("PrimaryLastName", System.ComponentModel.ListSortDirection.Ascending));
    familyCVS.View.SortDescriptions.Add(new System.ComponentModel.SortDescription("Tag", System.ComponentModel.ListSortDirection.Ascending));
    
  • 然后,我将各种控件和不该绑定的控件绑定到该CollectionViewSource:

    private void DeletePerson(Person person)
    {
        entities.DeleteObject(person);
        entities.SaveChanges();
        personOC.Remove(person);
    }
    
  • 当我需要添加或删除记录/对象时,可以从实体数据模型和ObservableCollection中手动进行操作:

    private void DeletePerson(Person person)
    {
        entities.DeleteObject(person);
        entities.SaveChanges();
        personOC.Remove(person);
    }
    
  • 我通常使用StackPanel和DockPanel控件来定位元素。 有时我会使用网格,但似乎很难维护:如果要在网格顶部添加新行,则必须触摸网格直接托管的每个控件,以使其使用新行。 g (微软似乎从未真正获得过DRY概念。)

  • 我几乎从不使用VS WPF设计器来添加,修改或定位控件。 VS附带的WPF设计器在某种程度上模糊地帮助您查看表单的外观,但是即使那样,还是不行,特别是如果您使用的数据模板未绑定到以下位置可用的数据时 设计时间。 如果需要编辑XAML,我会像男人一样手动处理。

  • 我的大部分真实代码是C#而不是XAML。 正如我在其他地方提到的那样,除了我还不习惯于“思考”这一事实之外,XAML令我觉得它是一种笨拙,丑陋的语言,它也恰巧缺乏可怜的设计人员和智能支持,并且 无法调试。 g 因此,每当我能清楚地看到如何在C#代码中做某件事时,却看不到如何在XAML中做事,我都会在C#中这样做,而无需道歉。 关于如何避免在WPF页面中几乎不使用代码隐藏(例如,用于事件处理)的良好实践,已有很多文章,但是至少到目前为止,这对我来说毫无意义。 当我可以使用像C#这样具有世界一流的编辑器,近乎完美的好而干净的语言时,为什么要用丑陋,笨拙的语言,令人讨厌的语法,令人惊讶的不良编辑器以及几乎没有类型安全性来做某事 智能和无与伦比的类型安全性?

这就是我的所在。 有什么建议么? 我是否错过了其中的大部分内容? 我真的应该考虑做不同的事情吗?

trans by 2020-01-19T01:09:12Z

wpf-如何在不激怒用户的情况下格式化绑定到TextBox的小数?

我正在尝试在WPF中使用数据绑定在TextBox中显示带格式的小数。

目标

目标1:在代码中设置小数属性时,在TextBox中显示2个小数位。

目标2:当用户与TextBox(键入)交互时,不要生气。

目标3:绑定必须更新PropertyChanged上的源。

尝试次数

尝试1:不格式化。

在这里,我们几乎从头开始。

<TextBox Text="{Binding Path=SomeDecimal, UpdateSourceTrigger=PropertyChanged}" />

违反目标1。___.__将在文本框中显示“ 4.50000”。

尝试2:在绑定中使用StringFormat。

<TextBox Text="{Binding Path=SomeDecimal, UpdateSourceTrigger=PropertyChanged, StringFormat=F2}" />

违反目标2。说SomeDecimal为2.5,并且文本框显示为“ 2.50”。 如果选择全部并键入“ 13.5”,则在文本框中将以“ 13.5.00”结尾,因为格式化程序“有帮助地”会插入小数和零。

尝试3:使用扩展WPF工具包的MaskedTextBox。

[http://wpftoolkit.codeplex.com/wikipage?title=MaskedTextBox]

假设我正确阅读了文档,则掩码## 0.00表示“两个可选数字,后跟一个必需数字,一个小数点和另外两个必需数字。这迫使我说”可以输入的最大数字。 这个TextBox是999.99“,但我可以接受。

<xctk:MaskedTextBox Value="{Binding Path=SomeDecimal, UpdateSourceTrigger=PropertyChanged}" Mask="##0.00" />

违反目标2。TextBox以___.__开头,然后选择它并键入5.75,将产生575.__。获得5.75的唯一方法是选择TextBox并键入<space><space>5.75

尝试4:使用扩展WPF工具包的DecimalUpDown微调器。

[http://wpftoolkit.codeplex.com/wikipage?title=DecimalUpDown]

<xctk:DecimalUpDown Value="{Binding Path=SomeDecimal, UpdateSourceTrigger=PropertyChanged}" FormatString="F2" />

违反目标3。DecimalUpDown会愉快地忽略UpdateSourceTrigger = PropertyChanged。 “扩展的WPF工具包Codeplex”页面上的一位协调员建议在[http://wpftoolkit.codeplex.com/discussions/352551/。]上修改ControlTemplate。它满足目标3,但违反了目标2,表现出与“尝试”中相同的行为 2。

尝试5:使用样式数据触发器,仅在用户未编辑时才使用格式。

在TextBox上使用StringFormat绑定到双精度型

即使这个目标满足了所有三个目标,我也不想使用它。 (A)文本框每个变成12行而不是1行,我的应用程序包含很多文本框。 (B)我所有的文本框都已经具有一个Style属性,该属性指向设置了Margin,Height和其他内容的全局StaticResource。 (C)您可能已经注意到下面的代码两次设置了绑定路径,这违反了DRY主体。

<TextBox>
    <TextBox.Style>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="Text" Value="{Binding Path=SomeDecimal, StringFormat=F2}" />
            <Style.Triggers>
                <Trigger Property="IsFocused" Value="True">
                    <Setter Property="Text" Value="{Binding Path=SomeDecimal, UpdateSourceTrigger=PropertyChanged}" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

除了这些不舒服的事情...

违反目标2。首先,突然单击显示“ 13.50”的文本框,使其突然显示“ 13.5000”。 其次,如果以空白的TextBox开头,并且键入“ 13.50”,则TextBox将包含“ 1350”。 我无法解释为什么,但是如果光标位于TextBox中字符串的右端,则按句点键不会插入小数。 如果TextBox包含长度大于0的字符串,并且我将光标重新定位到该字符串右端以外的任何位置,则可以插入小数点。

尝试6:自己动手做。

我将通过子类化TextBox或创建附加属性,然后自己编写格式代码来度过痛苦和磨难。 它将充满琴弦操纵,并导致大量脱发。


是否有人对格式化满足以上所有目标的文本框的小数格式有任何建议?

trans by 2020-01-19T01:05:10Z

从Android中的应用程序恢复已删除的Xml文件

是否可以从Android IDE中的应用恢复已删除的XML文件?

不幸的是,我从应用程序中删除了重要文件。

trans by 2020-01-19T00:59:22Z

关闭php / mysql上的警告和错误

我正在收到预期的通知和警告,并想在我的php文件中将其关闭。 错误是:

Warning: fsockopen()

并注意以下内容:

Notice: A non well formed numeric value encountered in

我打算为此脚本使用cron,并且不想在任何地方记录任何错误或通知。

trans by 2020-01-19T00:55:13Z

iPhone-如何重复AVAudioPlayer?

我只是想知道您如何重复AVAudioPlayer?

trans by 2020-01-19T00:52:16Z

php-如何使用JSON以外的方法将数组转换为字符串?

除了使用JSON,PHP中用于将数组转换为字符串的函数是什么?

我知道有一个功能直接像JSON。 我只是不记得了。

trans by 2020-01-19T00:47:19Z

TCP与UDP-什么是TCP连接?

这个问题已经在这里有了答案:

  • TCP和UDP之间的区别?                                     10个答案

TCP连接到底是什么?我了解客户端与服务器之间没有物理连接。 这种连接是否只是客户端的套接字与三次握手后服务器创建的新套接字链接在一起?此后,一旦建立了“连接”,连接两端的套接字便知道将数据包发送到哪里。

除了与TCP的初始握手外,这与UDP的功能有何不同?是否每个服务器套接字只有一个将数据包发送到该特定套接字的客户端?

在主机之间建立专用连接有哪些可能的优点? 我对TCP和UDP的理解仍然是非常基础的,因此应有广泛的概括。

trans by 2020-01-19T00:44:52Z

算法-为什么合并排序最坏情况下运行时间O(n log n)?

有人可以用简单的英语或简单的方式向我解释吗?

trans by 2020-01-19T00:38:28Z

python-有没有办法使Tkinter文本小部件为只读?

它似乎没有该属性,但是对我来说真的很有用。

trans by 2020-01-19T00:34:02Z

Django管理员排序顺序

我已经浏览了[http://docs.djangoproject.com]上的投票教程。

我想知道在编辑民意调查时是否可以向“选择”模型中添加排序顺序,以及如何实现

谢谢

trans by 2020-01-19T00:31:16Z

CodeGo.net>如何将字符串明确转换为securestring

我希望将在文本框中输入的文本转换为c#中的securestring。

trans by 2020-01-19T00:26:57Z

毫秒转换为人类可读的时间圈

我想以人类可读的格式来格式化一些命令的执行时间,例如:

3 -> 3ms
1100 -> 1s 100ms
62000 -> 1m 2s
etc ..

考虑到天,小时,分钟,秒...

是否可以使用C#

trans by 2020-01-19T00:21:42Z

iPhone-如何使用AFNetworking 2.0下载图像?

大概没有AFImageRequestOperation,但是只有AFImageResponseSerializer,坦率地说,我不明白,或者我在AFNetworking网站上看的时间太长了……用以前的AFNetworking下载图像就像一种魅力。 我不愿回到旧的AFnetworking,因为我几乎通过新版本完成了所有工作...有人吗?

trans by 2020-01-19T00:19:08Z

ios-如何以编程方式创建布局约束

我在通用应用程序的底部显示一个视图,并在视图中动态添加此视图。 我想每次像iAd一样在底部显示此视图。 在两个方向上。 我如何为此添加约束。 请提出建议。

谢谢

trans by 2020-01-19T00:15:12Z

git-如何仅提交修改过的(而不是新的或删除的)文件?

git add显示了一堆已修改的文件和一些已删除的文件。 我要先提交修改后的文件,然后再提交删除的文件。 我在git add .中看不到任何可以执行此操作的选项。 我该怎么做?

编辑:正如指出的那样,git add不会上演已删除的文件,因此git add .可以。 但这会带来副作用,包括未跟踪的文件,我也想避免这种情况。 我相应地更改了问题的标题。

trans by 2020-01-19T00:11:12Z

指针-C ++中*&和**&的含义

我在函数声明中多次发现了这些符号,但我不知道它们的含义。

例:

void raccogli_dati(double **& V, double **p, int N) { 
  int ultimo = 3; 
  V = new double * [N/2]; 
  for(int i=0; i < N/2; i++) { 
    V[i] = new double[N/2], std :: clog << "digita " << N/2 - i
                 << " valori per la parte superiore della matrice V: "; 
    for(int j=i; j < N/2; j++) 
      std :: cin >> V[i][j], p[ultimo++][0] = (V[i][j] /= sqrt(p[i][0]*p[j][0]));
  } 
  for(int i=1; i < N/2; i++) 
    for(int j=0; j < i; j++) 
       V[i][j] = V[j][i];
}
trans by 2020-01-19T00:06:15Z

python-Docker-compose和pdb

我看到我不是第一个提出这个问题的人,但是对此没有明确的答案:

在Python开发中如何在docker-composer中使用pdb?

当您向Google叔叔询问有关docker-compose run my-awesome-app python app.py 0.0.0.0:8000的信息时,您会得到很棒的docker-composer示例和教程,并且我在一个环境中正常工作-我可以运行docker-compose up,并且我在一个整洁的开发人员环境中工作,但PDB无法正常工作(非常可悲)。

我可以运行docker-compose run my-awesome-app python app.py 0.0.0.0:8000,但是我可以从主机上通过[http://127.0.0.1:8000]访问我的应用程序(我可以使用docker-compose up),并且似乎每次使用run时都会创建新容器,例如:dir_app_13dir_db_4我根本不想要。

善良的人们请帮助我。

聚苯乙烯
我在该示例中使用pdb ++,在此django示例中使用了基本的docker-compose.yml。 我也尝试过,但似乎没有任何帮助。 我正在使用docker-composer 1.3.0rc3,因为它具有Dockerfile指向支持。

trans by 2020-01-19T00:03:18Z

haskell-ghci配置文件

我在Ubuntu上使用ghci 6.8.2。 ghci是否使用我们可以进行一些初始设置的配置文件? 例如::set prompt "ghci> "

trans by 2020-01-19T00:00:12Z

html-如何使用javascript更改按钮文本

我有以下代码通过javascript代码设置按钮的文本,但是它不起作用,因此文本保持不变。

function showFilterItem() {
    if (filterstatus == 0) {
        filterstatus = 1;
        $find('<%=FileAdminRadGrid.ClientID %>').get_masterTableView().showFilterItem();
        document.getElementById("ShowButton").innerHTML = "Hide Filter";
    }
    else {
        filterstatus = 0;
        $find('<%=FileAdminRadGrid.ClientID %>').get_masterTableView().hideFilterItem();
        document.getElementById("ShowButton").innerHTML = "Show filter";
    }
}

我的html按钮代码是

  <input  class="button black" id="ShowButton" type="button" runat="server"  value="Show Filter" onclick="showFilterItem()" />
trans by 2020-01-18T23:56:03Z

连接-Oracle-我正在使用哪个TNS名称文件?

有时我会遇到Oracle连接问题,因为无法弄清楚数据库客户端正在使用哪个tnsnames.ora文件。

解决这个问题的最佳方法是什么? ++对各种平台解决方案感到满意。

trans by 2020-01-18T23:49:50Z

上一页 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 下一页 共3084页