小编Azh*_*har的帖子

WPF Sentinel对象以及如何检查内部类型

正如你们中的一些人所发现的那样,一个新特性(?)出现在WPF 4中,其中数据绑定引擎可以将名为" {DisconnectedItem} " 的类MS.Internal.NamedObject的自定义控件实例传递到DataContext中 - 而不是您的代码所期望的数据项(当模板控件被其ItemsControl断开时会发生这种情况).这些被称为哨兵对象.

在现有代码中,这可能导致虚假异常,其中代码没有准备好.这些可以被数据绑定子系统吞噬,或者它们可能造成严重破坏.密切关注您的调试控制台.

无论如何,我在这个MSDN论坛上了解到了这一点.Sam Bent的帖子解释了这一切.现在去读它,你会想知道这个.实质是这些事件永远不会被解雇(这就是错误),所以:

如果DataContext是sentinel对象,则忽略DataContextChanged事件.

所以,我想检查一下我的DataContext.但是怎么样?考虑:

public bool IsSentinelObject(object dataContext)
{
    return (dataContext is MS.Internal.NamedObject);
}
Run Code Online (Sandbox Code Playgroud)

猜猜会发生什么?它没有编译,因为MS.Internal.NamedObject是内部的,我无法访问.当然,我可以像这样破解它:

public bool IsSentinelObject(object dataContext)
{
    return dataContext.GetType().FullName == "MS.Internal.NamedObject"
           || dataContext.ToString() == "{DisconnectedObject}";
}
Run Code Online (Sandbox Code Playgroud)

(或其他东西,有效).我也遵循Sam的建议缓存对象以供以后引用相等性检查(它是一个单例).

当然,这意味着我没有问题,不是真的.但我很好奇,这篇文章肯定会让一些用户受益,所以无论如何都值得问:

有没有办法可以根据内部NamedObject类型精确检查类型,而无需求助于字符串比较?

.net c# data-binding wpf wpf-4.0

29
推荐指数
2
解决办法
5509
查看次数

SQL Server错误"隐式转换,因为由于排序规则冲突,值的排序规则未解决".

我在开发存储过程时遇到此错误

无法执行varchar值到varchar的隐式转换,因为由于排序规则冲突而无法解析值的排序规则.

声明是这样的

Select City COLLATE DATABASE_DEFAULT AS Place, State, Country FROM DEPT1
UNION ALL
Select '' AS Place, 'Arizona' As State, Country FROM DEPT2
Run Code Online (Sandbox Code Playgroud)

但如果如果这样做,它也会给出同样的错误

 Select City COLLATE DATABASE_DEFAULT AS Place, State, Country FROM DEPT1
 UNION ALL
 Select '' COLLATE DATABASE_DEFAULT AS Place, 'Arizona' As State, Country FROM DEPT2
Run Code Online (Sandbox Code Playgroud)

实际上这个代码是由其他人编写的,我只是编辑代码,不知道为什么他添加了COLLATE DATABASE_DEFAULT但是如果我删除它也会给出相同的错误

无法执行varchar值到varchar的隐式转换,因为由于排序规则冲突而无法解析值的排序规则.

sql t-sql sql-server-2005

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

如何更改安装项目中的窗口Applicatoin的默认图标

How to change the Windows Application's default icon with other one in C# desktop application. I am trying to change it in Setup Project but it is not. I want to show my own icon with Application's shortcut rather then windows default icon

.net c# desktop desktop-application

21
推荐指数
4
解决办法
5万
查看次数

如何获得UITextField Tap事件?

我试图在Tap上显示UIAlertView或者在UITextField上显示IPad和IPhone.我做了一个IBAction并用UITextField的Tap Down事件附上它.

但它不能正常工作,并不总是意味着,如果是iPhone而且不能在iPad的情况下工作

- (IBAction) TopuchState
{
    //function code
}
Run Code Online (Sandbox Code Playgroud)

请帮忙我怎么能这样做.

在此输入图像描述

iphone objective-c ipad ios ios-universal-app

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

18
推荐指数
3
解决办法
8万
查看次数

iphone:Apple ID无权访问iTunes Connect

我们有一个公司帐户,我有管理员权限,我正在尝试登录

https://itunesconnect.apple.com

但它给出了错误.

Apple ID无权访问iTunes Connect.

我可以登录Apple网站并拥有我们公司帐户的管理员权限,但无法将应用程序发布到App Store,因为我没有Team Agents权限,并且出现错误

"只有团队代理才有权准备和提交分发申请."

现在我想将应用程序发布到App Store,以便它可以为多人测试.

iphone objective-c app-store ipad ios

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

期望参数'@ID',没有提供?

我发送ID作为outparameter,但它给出了错误

System.Data.SqlClient.SqlException:过程或函数'usp_ClientHistoryItem'需要参数'@ID',这是未提供的.

 using (SqlCommand cmd = new SqlCommand("dbo.usp_ClientHistoryItem", conn))
 {
      SqlParameter parameterID = new SqlParameter("@ID", oReservation.Id);
      parameterID.Direction = ParameterDirection.Output;
      cmd.Parameters.Add(parameterID); 

      cmd.Parameters.Add(new SqlParameter("@PhoneNo", oReservation.ClientPhone));
      cmd.Parameters.Add(new SqlParameter("@UserId", oReservation.UserID));
      cmd.Parameters.Add(new SqlParameter("@Description", oReservation.Description));
      cmd.Parameters.Add(new SqlParameter("@TestId", oReservation.TestId));
      cmd.Parameters.Add(new SqlParameter("@StartDate", oReservation.StartDate));

      cmd.ExecuteNonQuery();

      returnValue = Convert.ToInt32(cmd.Parameters["@ID"].Value);

      return returnValue;
}
Run Code Online (Sandbox Code Playgroud)

.net c# database sqlcommand

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

如何将Matlab代码库与Android集成?

我有一个算法和MATLAB中的其他一些代码,我想在我的Android应用程序中使用它.

我怎样才能做到这一点?

  • 我可以从MATLAB制作一个jar文件用于Android吗?
  • 我还要做点什么吗?

matlab android jar

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

无法加载文件或程序集'MySql.Data,Version = 6.2.2.0

我正在使用c#和基于MySQL的数据库进行桌面应用程序.当我在我的机器上安装它的安装程序时,它工作正常但是当我在其他机器上安装它时,在尝试访问数据库时会给出以下异常.我MySQL.Data.dll用来与MySQL通信.

无法加载文件或程序集"MySql.Data,版本= 6.2.2.0,文化=中性公钥= c5687fc88969c44d"或它的一个依赖.该系统找不到指定的文件.

MySql.Data.dll文件存在于Program文件夹的Project文件夹中

实际上,当我从程序文件中的文件夹运行它时,它运行正常,没有错误,但当我尝试从开始菜单中的快捷方式运行它时,它给出了该错误.

.net c# mysql database

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

将DateTime.Now转换为秒

我正在尝试编写一个函数,将DateTime.Now实例转换为它表示的秒数,以便我可以将它与另一个DateTime实例进行比较.这是我目前拥有的:

public static int convertDateTimeToSeconds(DateTime dateTimeToConvert)
    {
        int secsInAMin = 60;
        int secsInAnHour = 60 * secsInAMin;
        int secsInADay = 24 * secsInAnHour;
        double secsInAYear = (int)365.25 * secsInADay;

        int totalSeconds = (int)(dateTimeToConvert.Year * secsInAYear) + 
                       (dateTimeToConvert.DayOfYear * secsInADay) +
                       (dateTimeToConvert.Hour * secsInAnHour) +
                       (dateTimeToConvert.Minute * secsInAMin) + 
                       dateTimeToConvert.Second;

        return totalSeconds;
    }
Run Code Online (Sandbox Code Playgroud)

我意识到我在一年内截断了秒的计算,但我不需要我的计算精确.我真的想知道我用来计算秒数的方法是否正确.

有没有人能够更好地计算从DateTime对象给出的秒数?

另外,如果我要用C#编码,如果我要计算自0 AD以来的所有秒数,那么返回类型应该是int64吗?

.net c# .net-4.0 .net-3.5

15
推荐指数
5
解决办法
6万
查看次数