我刚刚从Windows 7将我的PC移动到Windows 8,在运行我们的WPF应用程序时,我注意到我们的WPF弹出窗口和/或工具提示现在默认情况下位于左下角,而不是正常的右下角.有没有人注意到这个?我知道你可以在xaml的每个工具提示中指定它们的位置,但我们有很多工具提示和弹出窗口.我想知道是否有办法在WPF应用程序中全局指定默认位置.谷歌在这个问题上没有取得很多成果.我们有理由将它们保持在相同的原始默认位置(某些弹出窗口具有相对于其启动位置的内容).
Windows 8 :(左下)

Windows 7 :(右下)

相同的代码!标准的"工具提示"xaml属性.
有任何想法吗?
已经解决,我发表了评论
好的,我发现了这个问题.它与平板电脑/触摸屏有关.(左撇子...右手偏好)这另一个链接提供了一个原因.我正在制定一个解决方案来解决这个问题.生病了很快就会发布!
当我们离开Linq2Sql时,我们正在学习Entity Framework 6.1(来自NuGet).我们有一小部分表关联两个单独的表,如下所示.
EF6数据库第一代
数据库图:

架构概述:

当在Visual Studio,空白类库中,执行Database First EF6 EDMX文件时,该图只生成TableA和TableC - TableB不会生成.

视觉工作室查看:

您可以看到只创建了TableA和TableC.从技术上讲,应该已经创建了TableB,因为您希望能够管理这些引用.
图中所示的A和C之间的关联:

我觉得我错过了一个选项,或者误解了实体框架的一个关键概念.知道如何用T4生成缺少的TableB吗?EDMX文件确实显示它,但由于某种原因,它不会生成到.CS文件中,其中两个属性指示关系.
我们需要这个的主要原因是我们扩展了EF6 T4模板以添加一些工厂模式以匹配我们现有的模型.因为它不会为TableB生成一个类,所以我们不会得到我们正在寻找的自动生成的代码.
想法/建议?谢谢.
我有一个分页API,它返回用户请求的行,但一次只有这么多,而不是整个集合.API按设计工作,但我必须计算可用的记录总数(正确的页面计算).在API中,我使用Linq2Sql,在我最终提出请求之前,我在IQueryable上工作了很多.当我去计算时,我会调用类似于:totalRecordCount = queryable.Count();
结果SQL很有意思,但它也增加了一个不必要的Order By,这使得查询非常昂贵.
exec sp_executesql N'SELECT COUNT(*) AS [value]
FROM (
SELECT TOP (1) NULL AS [EMPTY]
FROM [dbo].[JournalEventsView] AS [t0]
WHERE [t0].[DataOwnerID] = @p0
ORDER BY [t0].[DataTimeStamp] DESC
) AS [t1]',N'@p0 int',@p0=1
Run Code Online (Sandbox Code Playgroud)
因为我正在使用IQueryable,所以我可以在它进入SQL服务器之前操作IQueryable.
我的问题是,如果我已经有一个带有OrderBy的IQueryable,是否可以在调用Count()之前删除该OrderBy?
喜欢:totalRecordCount = queryable.NoOrder .Count();
如果没有,没有大事.我看到很多关于OrderBy的问题,但没有涉及从Linq表达式中删除OrderBy的任何问题.
谢谢!
我最喜欢的一个C#功能是CS6中的" 零传播 ".
这为我们许多人清理了很多代码.
我遇到的情况似乎不太可能.我不知道为什么我虽然null传播只是一些编译器魔术,它为我们做了一些空检查,允许我们保持更清晰的代码.
在挂钩事件的情况下..
public override void OnApplyTemplate()
{
_eventStatus = base.GetTemplateChild(PART_EventStatus) as ContentControl;
// This not permitted and will not compile
_eventStatus?.IsMouseDirectlyOverChanged += EventStatusOnIsMouseDirectlyOverChanged;
// but this will work
if(_eventStatus != null) _eventStatus.IsMouseDirectlyOverChanged += EventStatusOnIsMouseDirectlyOverChanged;
base.OnApplyTemplate();
}
private void EventStatusOnIsMouseDirectlyOverChanged(object sender, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
throw new NotImplementedException();
}
Run Code Online (Sandbox Code Playgroud)
编译输出显示:
error CS0079: The event 'UIElement.IsMouseDirectlyOverChanged' can only appear on the left hand side of += or -=
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是 - 我对误传播的误解是什么?为什么这不是允许的语法?
我们的TFS 2017服务器/构建服务器,我们使用"Visual Studio Installer"将Visual Studio 2017更新到最新版本(15.5.27130)以支持某些功能/修复.当我们进行更新时,TFS构建过程现在默认为MSBuild 14.0,它没有我们在MSBuild 15中使用的C#功能.我已经尝试更新TFS 2017 Update 3,以及完全卸载VS 2017并重新安装.没有区别.由于错误的MS Build,我们所有的构建服务现在都失败了.这已经与TFS 17,VS 17合作了一年没有问题.
我可以在路径"C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin"中看到MSBuild 15
我的TFS构建定义也有"最新"以及我选择2017年时 - 但没有任何区别.
我也在构建的输出中看到了这个问题:
怎么没被发现?如何更改默认值?
注意 - 我不确定这是否适合StackOverflow,但它是与更多熟悉的人相关的开发.
有没有办法保持文化特定的日期时间格式,但强制12/24小时渲染?我知道我可以用实际的日期/时间格式字符串做很多事情HH:mm:ss ,hh:mm:ss但我想尊重当前的用户文化格式(即mm/dd/yyyy或yyyy/mm/dd等),只需强制12/24小时的时间渲染.
使用System.Linq.Dynamic(在这里管理https://github.com/kahanu/System.Linq.Dynamic),我试图使用Entity Framework 6(或更高版本)捕获在聚合目的DayOfWeek上找到的字段DateTime.
以前要求类似的东西,这有很大帮助,动态Linq +实体框架:动态选择的日期时间修改
实体框架支持DayOfWeek使用
SqlFunctions.DatePart("dw", datetime?)
Run Code Online (Sandbox Code Playgroud)
或者我们可以用类似的东西做一些更需要的东西
DbFunctions.DiffDays(date?, date?).
Run Code Online (Sandbox Code Playgroud)
理念:
我发现这非常有趣,我喜欢它,因为它不使用SqlFunctions可能让我局限于SQL Server的东西.此外,开发人员可以控制一周的第一天,而无需查询SQL Server属性以查找其配置方式(第一天).
出于实验目的,我一直试图在VisitMember()覆盖中实现这一点:
protected override Expression VisitMember(MemberExpression node)
{
if (node.Type == typeof(System.DayOfWeek))
{
var firstSunday = new DateTime(1753, 1, 7);
var firstSundayExpression = Expression.Constant(firstSunday, typeof(DateTime?));
var timeValue = node.Expression;
if (timeValue.Type != typeof(DateTime?)) timeValue = Expression.Convert(timeValue, typeof(DateTime?));
var methodCall = Expression.Call(
typeof(DbFunctions), "DiffDays", Type.EmptyTypes, firstSundayExpression, timeValue);
return Expression.Convert(methodCall, typeof(int?));
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试找到一种方法在执行sql分组之前将UTC时间移动到Local.我正在使用System.Linq.Dynamic(在这里管理https://github.com/kahanu/System.Linq.Dynamic).它非常适合进行动态选择而无需在编译时获得所需的字段.在我们的例子中,我们以UTC格式存储所有日期时间.在这个动态选择中,可能有人想要在小时,年,月等上进行分组.在这种情况下,我们必须将数据移动到本地时间,以防止混淆.
例:
var select = queryable.Select(string.Format("new ({0}, {1})", datetimeColumn, someOtherColumn));
Run Code Online (Sandbox Code Playgroud)
通常在我们的tsql或甚至在使用lambda表达式的实体框架中,您可以添加所需的偏移量.但是在动态linq选项中,您似乎无法像使用Linq2Sql那样执行任何日期操作,如DateTime.AddHours(x)或DateTime.Subtract(x).实体框架6希望您使用DbFunctions.AddHours(x)等.但是动态linq代码在没有修改的情况下不会接受DbFunction而不会出错.
例:
var select = queryable.Select(string.Format("new (System.Data.Entity.DbFunctions.AddHours({0},7) as {0}, {1})", datetimeColumn, someOtherColumn));
Run Code Online (Sandbox Code Playgroud)
返回错误:XXX类型
中不存在属性或字段"System" (删除命名空间无效).
使用所需的代码:
var select = queryable.Select(string.Format("new ({0}.AddHours(7), {1})", datetimeColumn, someOtherColumn));
Run Code Online (Sandbox Code Playgroud)
结果有错误:LINQ to Entities无法识别方法'System.DateTime AddHours(Double)'方法,并且此方法无法转换为商店表达式.
我希望SQL在groupby之前执行日期时间数学运算.一旦groupby发生,就不再有UTC的概念,因为用户将看到本地化的结果集.
我担心我只是为了支持传递实体框架扩展而更新我的github fork以支持传递实体框架扩展,但在此之前,想知道是否有其他人有解决方案或想法.
注意:由于更改SQL数据存储技术的可能性,我没有使用DateTimeOffset.
c# ×6
.net ×5
dynamic-linq ×2
linq ×2
wpf ×2
c#-6.0 ×1
cultureinfo ×1
datetime ×1
iqueryable ×1
linq-to-sql ×1
msbuild ×1
tfs2017 ×1
tfsbuild ×1
tooltip ×1
windows-8 ×1
xaml ×1