我有一个WPF DataGrid,其中SelectedItem绑定到ViewModel属性.
SelectedItem="{Binding DataContext.SelectedBooking, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"
Run Code Online (Sandbox Code Playgroud)
如果用户点击一行,选择它,唯一的可视线索是该行的灰色背景变得非常轻微.我需要让这个更明显,所以我尝试单独添加这些:
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="Red"/>
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
Run Code Online (Sandbox Code Playgroud)
和
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"/>
</DataGrid.Resources>
Run Code Online (Sandbox Code Playgroud)
结果是一样的.当用户单击一行时,它会非常短暂地闪烁红色,然后返回到淡灰色,尽管Row实际上仍然是被选中.如果他们第二次点击它,它会变红并保持红色.
如果我删除SelectedItem上的Binding,它按预期工作.无论Binding如何,我怎样才能完成这项工作?
此问题之前已被问过数百次,但所提出的解决方案似乎都没有效果.
我正在Visual Studio 2013中构建一个MVC5项目.它运行正常.但是,在VS中的所有.cshtml页面中,所有内联Razor代码都用红色下划线,好像这是一个错误.@model并ViewBag声明它们在当前背景下不存在.Html.ActionLink声明它不包含ActionLink的定义.不同对象上还有其他错误,并且智能感知被破坏.
构建项目时也会显示这些错误.奇怪的是,我们已经在TFS上进行了一次门禁登记,并且它的构建就好了.
MVC和Razor通过NuGet安装.Nuget告诉我,MBC的版本是5.2.3,安装的Razor版本是3.2.3.
Views文件夹中有一个web.config文件,它看起来像这样:
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="MyProjectNamespace" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
主web.config文件中包含以下部分:
<dependentAssembly> …Run Code Online (Sandbox Code Playgroud) 我在一些遗留代码中遇到了一大堆旧的方法调用,其中一个或一些正在制造瓶颈并且确实减慢了速度.有没有快速的方法我可以获得一个报告,说明哪些方法调用花费时间,没有在调试中运行,单步执行并查看光标暂停的位置?
完全混淆了这里所需的数据类型.
我有这个Linq声明:
var feat = AllCustomers
.Select(c => c.CustomerServices.SelectMany(cs => cs.CustomerServiceFeatures)
.SelectMany(csf => csf.ConfigElements).Where(ce => ce.Name == "ItemType").Select(ce => ce.Value).Distinct());
Run Code Online (Sandbox Code Playgroud)
它返回所需的数据,VS告诉我该类型被设置为:
System.Data.Objects.ObjectQuery<System.Collections.Generic.IEnumerable<string>>
Run Code Online (Sandbox Code Playgroud)
但是我想将这些数据添加到字符串列表中:
List<string> itemTypes = new List<string>();
itemTypes.AddRange(feat);
Run Code Online (Sandbox Code Playgroud)
但这会引发错误:
Argument 1: cannot convert from 'System.Linq.IQueryable<System.Collections.Generic.IEnumerable<string>>' to 'System.Collections.Generic.IEnumerable<string>'
Run Code Online (Sandbox Code Playgroud)
我找不到强制转换为正确类型所需的语法.有人可以帮忙吗?
干杯,马特
我正在尝试在ac#mvc web项目中创建一个wcf服务.我添加了一个"WCF服务"类型的新项目,并在提供的接口中添加了一个测试方法:
[ServiceContract]
public interface ITest
{
[OperationContract]
void DoWork();
bool testWorking();
}
Run Code Online (Sandbox Code Playgroud)
并提供的服务:
public class Test : ITest
{
public void DoWork()
{
}
public bool testWorking()
{
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我转到web.config文件并将以下内容添加到system.ServiceModel标记:
<services>
<service name="Test" behaviorConfiguration="MyServiceTypeBehaviors">
<endpoint address="" binding="wsHttpBinding" contract="ITest">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceTypeBehaviors" >
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Run Code Online (Sandbox Code Playgroud)
在这一点上,据我所知,我应该能够在浏览器中查看这个并获得测试消息告诉我,这是我实现客户端使用此服务的时间.然而,实际发生的是我的浏览器下载.svc文件!
两个问题:
1)我到底做错了什么?为什么我没有看到预期的消息?
2)有什么办法可以自动启动WCF测试工具来运行这项服务吗?我能找到的唯一指导方针是从WCF项目开始.
更新:( svc文件的内容 - 从评论中抓取)
<%@ ServiceHost Language="C#" Debug="true"
Service="myemployersaddress.com.Test" CodeBehind="Test.svc.cs" %>
Run Code Online (Sandbox Code Playgroud) 如果这个问题对于网站来说过于开放,请道歉,但它似乎是最好的问题.
我是一名自学成才的程序员,在他的教育背景下几乎没有数学,并且在十年的职业生涯中,他从前端的Web脚本和Web开发慢慢地转向中级和数据级软件工程.因此,我的知识和经验方面有些缺乏.
在我最近与我的经理进行了一次审核之后,有人告诉我,克服这些差距就是我和升级到高级工程师角色之间的所有差距.然而,为了达到这个目的,我将不得不为自己找到一种结构化的学习方法,并证明我已经接受了我需要知道的东西.
我个人认为我的弱点如下.请注意,很多情况下的问题并不是我从技术上理解这些事情是如何工作的,而是我不知道应用它们在哪里或不适合它们.例如,我知道接口是什么,从技术上讲,它知道它做了什么,但是我很难区分什么时候使用接口,比如说,从一个基类继承的一组相关的OO类.因此,对于良好的软件设计而言,它比对技术的无知更为无知 - 我很难理解,消化和处理松耦合系统等问题.
此外,我从来没有做过一些像编译器这样的低级东西.我有时想知道,如果我对编写代码的能力有很大的不同,那么如果我对这种材料有了更好的了解,那么代码不仅有效而且优化得很好.
有时候担心我无法识别我的技能组合中的弱点,因为我不知道如何提出正确的问题.所以,希望我能正确地解决问题,我希望你的建议如下:
干杯,马特
我继承了一个功能但很混乱的WPF MVVM应用程序.令我烦恼的是,几乎没有任何单元测试使得采用MVVM有点毫无意义.所以我决定添加一些.
在抓住了悬而未决的果实后,我开始陷入困境.有很多高度相互依赖的代码,特别是在Views中使用的属性和方法中.例如,一次呼叫引发一系列"财产变化"事件,这反过来引发其他呼叫等等.
这使得测试非常困难,因为您必须编写大量的模拟并设置大量属性来测试单个函数.当然,每个类只需要执行一次,然后在每次测试中重复使用mock和ViewModel.但它仍然是一种痛苦,这让我觉得这是错误的做事方式.当然,尝试打破代码并使其更加模块化会更好.
我不确定MVVM中有多么现实.而且我处于恶性循环中,因为没有良好的测试,我担心通过重构编写好的测试来打破构建.事实上它是WPF MVVM是另一个问题,因为没有任何东西跟踪View和ViewModel之间的相互依赖性 - 粗心的名称更改可能会完全破坏某些东西.
我正在使用C#VS2013并抓住ReSharper的试用版,看看它是否会有所帮助.使用起来很有趣,但到目前为止还没有.我的单元测试经验并不多.
那么 - 我怎样才能合理,有条不紊地安全地处理这个问题呢?我如何使用现有工具(并查看任何其他工具)来提供帮助?
我正在将一个大型(~80GB)数据库从它的测试平台移到它的生产环境中。我们正在研究 Windows 服务器。这是我们第一次使用 MySQL,我们仍在学习预期的行为。
我们备份了数据
mysqldump -u root -p --opt [database name] > [database name].sql
Run Code Online (Sandbox Code Playgroud)
这花了大约 3 个小时并创建了一个 45GB 大小的文件。它在一夜之间复制到它的新家,第二天早上,我使用 MySQL Workbench 启动了恢复。根据其日志,它运行
mysql.exe --defaults-file="[路径]\tmpc8tz9l.cnf" --protocol=tcp --host=127.0.0.1 --user=[me] --port=3306 --default-character-set =utf8 --comments --database=[数据库名称] < "H:\[数据库名称].sql"
它正在工作 - 如果我连接到实例,我可以看到数据库和它的一些表。
问题是,它似乎需要永远。我认为它会在与备份相同的 3-4 个时间范围内恢复,可能更快,因为它正在恢复到具有 SSD 驱动器的更强大的服务器上。
但是现在已经过了大约 36 个小时,因为恢复开始了,而且 DB 的大小显然是 30GB。随着它的进行,它似乎变得越来越慢。
现在它已经开始工作了,我不想打断它,所以我想我只需要等待。但供日后参考:这种蜜糖缓慢的恢复速度正常吗?下次我们需要恢复大数据库时,我们可以做些什么来改善问题?
关于新的 Microsoft Identity Framework 的文档似乎有点稀少。我目前正在修改标准项目模板,在尝试使用双因素身份验证登录用户时遇到了一些奇怪的行为。
我们只允许通过 SMS 进行 2FA,所以我绕过了让用户选择他们想要的代码方式的选项。相反,当具有 2FA 和经过验证的电话号码的用户尝试登录时,他们会触发以下代码:
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: true);
switch (result)
{
case SignInStatus.RequiresVerification:
if (!await SignInManager.SendTwoFactorCodeAsync("Phone Code"))
{
TempData["ErrorMessage"] = "We could not verify your account. Please try again.";
return RedirectToAction("Error", "Error");
}
return RedirectToAction("VerifyCode", new { Provider = "Phone Code", ReturnUrl = returnUrl, RememberMe = model.RememberMe });
// other cases
}
Run Code Online (Sandbox Code Playgroud)
大多数情况下,这工作正常。但是在用户注销后,他们第一次重新登录时,SendTwoFactorCodeAsync返回 false 并且他们被定向到错误页面。
哪些情况会导致SendTwoFactorCodeAsync首次调用已注销用户时始终失败?
这个涉及DateTime计算的LINQ表达式编译得很好:
var jobsSinceLastRun = _rep.GetJobs(j => j.CompletedDate > DateTime.Now.AddMonths(-1));
Run Code Online (Sandbox Code Playgroud)
但是当你尝试运行它时,会抛出一个错误:
LINQ to Entities无法识别方法'System.DateTime AddMonths(Int32)'方法,并且此方法无法转换为存储表达式.
很容易修复:
DateTime oneMonthAgo = DateTime.Now.AddMonths(-1);
var jobsSinceLastRun = _rep.GetJobs(j => j.CompletedDate > oneMonthAgo);
Run Code Online (Sandbox Code Playgroud)
但这容易让我想知道幕后是什么导致LINQ拒绝内联计算?抽象的哪个部分失败了?
c# ×4
.net ×2
asp.net-mvc ×2
linq ×2
wpf ×2
architecture ×1
asp.net ×1
database ×1
datagrid ×1
mvvm ×1
mysql ×1
owin ×1
razor ×1
refactoring ×1
resharper ×1
restore ×1
unit-testing ×1
wcf ×1