小编Dam*_*cus的帖子

比较字符串与!=运算符给出不同的结果?

我知道这可能听起来像一个非常愚蠢的问题,但我对这个问题没有答案.我们的一位用户最近报告了一个错误,我意识到有一些旧的代码正在使用!= string.EmptyIsNullOrEmpty().我修好它IsNullOrEmpty()现在运行正常,但我想真正理解这个问题

问题是,完全相同的代码在某些机器上的运行方式不同.我基本上有一个对象:context["MODE"]那应该是空的.我在它上面添加了一些测试来记录:

        contextBuilder.AppendLine("MODE: |" + context["MODE"] + "|");
        contextBuilder.AppendLine("MODE != string.Empty: " + (context["MODE"] != string.Empty));
        contextBuilder.AppendLine("MODE TRIM != string.Empty: " + (context["MODE"].ToString().Trim() != string.Empty));
        contextBuilder.AppendLine("MODE.IsNullOrEmpty: " + string.IsNullOrEmpty(context["MODE"].ToString()));
        contextBuilder.AppendLine("MODE.TRIM.IsNullOrEmpty: " + string.IsNullOrEmpty(context["MODE"].ToString().Trim()));
Run Code Online (Sandbox Code Playgroud)

以下是我关于该字段详细信息的日志:

MODE: || 
MODE != string.Empty: False  
MODE TRIM != string.Empty: False 
MODE.IsNullOrEmpty: True  
MODE.TRIM.IsNullOrEmpty: True
Run Code Online (Sandbox Code Playgroud)

这是他的日志:

MODE: ||
MODE != string.Empty: True
MODE TRIM != string.Empty: False
MODE.IsNullOrEmpty: True
MODE.TRIM.IsNullOrEmpty: True
Run Code Online (Sandbox Code Playgroud)

你可以看到有一点不同:MODE != string.Empty对我来说是假的(有道理),对他来说是对的!MODE显然不是null(否则.ToString() …

c# string-comparison comparison-operators

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

关于正确重新模板化DataGrid

最近,我有这个问题有关的滚动和焦点改变.

我通过添加DataGrid以下内容解决了这个问题:

            <DataGrid.Template>
                <ControlTemplate>

                    <ItemsPresenter />
                </ControlTemplate>

            </DataGrid.Template>
Run Code Online (Sandbox Code Playgroud)

滚动现在工作正常,但出现了一个新问题:DataGrid标题不再显示了.它实际上是逻辑,因为现在我DataGrid只会在ItemsPresenter没有处理标题的情况下显示.因此,我尝试定义一个合适的模板,首先显示标题,然后显示一个项目ItemsPresenter,允许我轻松滚动.我只是遗漏了一些东西,还是要覆盖不同的属性?

谢谢!

wpf datagrid templates scrollviewer wpfdatagrid

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

NHibernate比经典的ODBC驱动程序更快吗?

我正在开发一个有点简单数据模型的应用程序(4个表包括两个小表,有大约10行,两个更大,有数百行).我正在使用C#,目前使用OdbcDriver作为我的数据访问层.我想知道这个驱动程序或NHibernate之间的性能有什么不同吗?应用程序有效,但我想知道安装NHibernate而不是经典的OdbcDriver会让它更快吗?如果是这样,差异真的值得安装NHibernate吗?(根据我从未使用过这种技术的事实)

谢谢!

c# sql nhibernate odbc

2
推荐指数
1
解决办法
1595
查看次数

WrapPanel中的VerticalAlignment - 如何使其正常工作?

我有一个奇怪的问题.

情况就是这样.我有一个ListView定制的自定义GroupStyle,使数据显示在Expanders中,其中有一个WrapPanel包含StackPanels(包含一个ToggleButton +一个自定义控件)StackPanel默认情况下,自定义控件不可见,并在ToggleButton选中时显示.但是,当我检查a时ToggleButton,会出现自定义控件,位于同一行的所有其他控件将移动到垂直中心.理想情况下,我希望其他成员能够保持领先地位.我试着尽VerticalAlignment="Top"我所能,不管怎样都不会改变.

成像问题:

扩展器的初始状态:

之前扩张

一旦ToggleButton被点击时,会出现以下情况:

扩张后

如您所见,"测试分析​​"按钮移动到中心位置.我希望它与原版保持在同一个地方.

而且,我已经在单独的DataTemplates对象中定义了所有这些样式.这里有一些轻量代码(我刚刚删除了这里的问题无用,不会让你阅读大量的XAML代码:)):

扩展器的内容属性:

<Expander.Content>
    <WrapPanel Background="White" VerticalAlignment="Top">
        <ItemsPresenter VerticalAlignment="Top"/>
    </WrapPanel>
</Expander.Content>
Run Code Online (Sandbox Code Playgroud)

清单的ItemsPanel:

<ItemsPanelTemplate >
    <WrapPanel 
         Width="{Binding (FrameworkElement.ActualWidth),
         RelativeSource={RelativeSource 
                         AncestorType=Expander}}"
         ItemWidth="{Binding (ListView.View).ItemWidth,
         RelativeSource={RelativeSource AncestorType=ListView}}"

         ItemHeight="{Binding (ListView.View).ItemHeight,
         RelativeSource={RelativeSource AncestorType=ListView}}" />
</ItemsPanelTemplate>
Run Code Online (Sandbox Code Playgroud)

清单的ItemsTemplate:

<StackPanel Orientation="Vertical" Height="Auto" Width="Auto" VerticalAlignment="Top" >
    <ToggleButton BorderBrush="{x:Null}" Background="{x:Null}" IsChecked="{Binding Value.IsToLaunch, Mode=TwoWay}"
              Command="{Binding DataContext.UpdateGroupCheckingsCommand,
                                RelativeSource={RelativeSource FindAncestor,
                                AncestorType={x:Type UserControl}}}"> …
Run Code Online (Sandbox Code Playgroud)

wpf wrappanel datatemplate wpf-controls vertical-alignment

2
推荐指数
1
解决办法
3787
查看次数

正则表达式奇怪的行为

我正在尝试创建一个C#/ WPF解析器.我对正则表达式有一个很好的全面理解,因为这不是我的第一个解析器(可能不是我的最后一个)

但是,现在我有一种非常奇怪的行为.这是我要解析的内容(注意:删除了实际数据,我只是按照与我相同的结构制作了一个字符串):

aaaaa bbbbb 50 c blabla

我的应用程序将收到我想要拆分和识别的行.由于某种原因,空格的数量是可变的(一个在aaaa和bbbb之间,两个在bbbb和50之间......).(注意人们告诉我之前:我不会使用string.Split().因为我有很多不同的线条结构,我应该总是得到相同的数据.只是拆分它会让我无法识别每一个部分意味着)

我目前的测试正则表达式有点简单:

(\S*)[\s*](\S*)[\s*](\S*)[\s*](p|c)(.*)
Run Code Online (Sandbox Code Playgroud)

现在,发生了什么.当bbbbb和50之间只有一个空格时,正则表达式正确解析(注意:我使用http://www.myregextester.com/index.php来测试我的正则表达式)

$matches Array:
(
    [0] => Array
        (
            [0] => aaaaa bbbbb 50 c  blabla
        )

    [1] => Array
        (
            [0] => aaaaa
        )

    [2] => Array
        (
            [0] => bbbbb
        )

    [3] => Array
        (
            [0] => 50
        )

    [4] => Array
        (
            [0] => c
        )

    [5] => Array
        (
            [0] =>   blabla
        )

)
Run Code Online (Sandbox Code Playgroud)

如果bbbb和50之间有两个空格,则会发生以下情况:

$matches Array:
(
    [0] => Array
        ( …
Run Code Online (Sandbox Code Playgroud)

c# regex

2
推荐指数
1
解决办法
96
查看次数

向 SQLite 插入日期

我正在使用WPF/C#&编写一个小应用程序SQLITE

其中一个函数将包含两个日期/时间值的记录插入到table.

我想知道是否有适当的方法来执行此操作(以确保日期/月份字段的存储一致)。

我创建了一个INSERT使用参数和日期变量的查询 (clsVariables.DatActivityEnd = DateTime.Now;)。

        String cntnStr = ClsVariables.StrDb;
        var connection = new SQLiteConnection(cntnStr);
        connection.Open();
        using (SQLiteCommand cmd = connection.CreateCommand())
        {
            cmd.CommandText =
                "INSERT INTO tblActivity ([Activity_Category], [Activity_Category_Sub], [Activity_Start], [Activity_End], [Activity_Duration]) VALUES (@ActivityCategory, @ActivityCategorySub, @ActivityStart, @ActivityEnd, @ActivityDuration);";
            cmd.Parameters.Add(new SQLiteParameter("@ActivityCategory", ClsVariables.StrActivityCurrent));
            cmd.Parameters.Add(new SQLiteParameter("@ActivityCategorySub", ClsVariables.StrActivitySubCurrent));
            cmd.Parameters.Add(new SQLiteParameter("@ActivityStart", ClsVariables.DatActivityStart.ToString()));
            cmd.Parameters.Add(new SQLiteParameter("@ActivityEnd", ClsVariables.DatActivityEnd.ToString()));
            cmd.Parameters.Add(new SQLiteParameter("@ActivityDuration", ClsVariables.DblActivityDuration));
            cmd.ExecuteNonQuery();
        }
        connection.Close();
Run Code Online (Sandbox Code Playgroud)

还有什么我应该做的吗 - 谢谢?

c# sqlite

2
推荐指数
1
解决办法
8601
查看次数