小编Jos*_*ant的帖子

WPF Border DesiredHeight

以下Microsoft示例代码包含以下内容:

<Grid>
...     
  <Border Name="Content" ... >
...     
  </Border>
</Grid>
<ControlTemplate.Triggers>
  <Trigger Property="IsExpanded" Value="True">
     <Setter TargetName="ContentRow" Property="Height"
             Value="{Binding ElementName=Content,Path=DesiredHeight}" />
  </Trigger>
...
</ControlTemplate.Triggers>
Run Code Online (Sandbox Code Playgroud)

但是,运行时,此代码会生成以下数据绑定错误:

System.Windows.Data Error: 39 : BindingExpression path error: 'DesiredHeight' property not found on 'object' ''Border' (Name='Content')'. BindingExpression:Path=DesiredHeight; DataItem='Border' (Name='Content'); target element is 'RowDefinition' (HashCode=2034711); target property is 'Height' (type 'GridLength')
Run Code Online (Sandbox Code Playgroud)

尽管有这个错误,代码仍能正常工作.我查看了文档并且DesiredHeight似乎不是其成员Border.任何人都可以解释DesiredHeight来自哪里?另外,有没有办法解决/抑制此错误,所以我的程序输出是干净的?

data-binding wpf controltemplate

10
推荐指数
2
解决办法
3563
查看次数

C#编译时字符串常量的连接

C#是否对常量字符串连接进行任何编译时优化?如果是这样,我的代码如何通过编写来利用这个?

示例:这些在运行时如何比较?

Console.WriteLine("ABC" + "DEF");

const string s1 = "ABC";
Console.WriteLine(s1 + "DEF");

const string s1 = "ABC";
const string s2 = s1 + "DEF";
Console.WriteLine(s2);
Run Code Online (Sandbox Code Playgroud)

c# string string-concatenation compile-time

9
推荐指数
2
解决办法
2540
查看次数

LINQ to SQL - 跟踪新/脏对象

有没有办法确定LINQ对象是否尚未插入数据库(新)或自上次更新(脏)后是否已更改?我计划将我的UI绑定到LINQ对象(使用WPF),并且需要它根据对象是否已经在数据库中而表现不同.

MyDataContext context = new MyDataContext();
MyObject obj;
if (new Random().NextDouble() > .5)
    obj = new MyObject();
else
    obj = context.MyObjects.First();
// How can I distinguish these two cases?
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一简单的解决方案是将新记录的主键设置为负值(我的PK是一个标识字段,因此将设置为正整数INSERT).这仅适用于检测新记录.它还需要身份PK,并且需要控制创建新对象的代码.

有一个更好的方法吗?似乎LINQ必须在内部跟踪这些对象的状态,以便它可以知道该做什么context.SubmitChanges().有没有办法访问"对象状态"?

澄清 显然我的初步问题令人困惑.我不是在寻找插入或更新记录的方法.我正在寻找一种方法,给定任何LINQ对象,以确定该对象是否未插入(新)或自上次更新(脏)后是否已更改.

c# linq linq-to-sql

8
推荐指数
1
解决办法
3366
查看次数

如何调整SQL Azure数据库的大小

如何将SQL Azure Web Edition 5 GB数据库的大小调整为1 GB数据库?我不再需要额外的容量,也不想以更高的费率收费.我在管理门户中看不到任何内容,快速的网络搜索也没有任何结果.

azure azure-sql-database

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

WPF中的变量绑定

我正在为一个丰富的TreeView创建一个UserControl(一个具有重命名节点,添加子节点等的上下文菜单).我希望能够使用此控件来管理或导航我将创建的任何分层数据结构.我目前使用它来实现任何实现以下接口的数据结构(接口实际上不需要实现,但是,只需要存在这些成员):

interface ITreeItem
{
    string Header { get; set; }
    IEnumerable Children { get; }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的UserControl中,我使用模板将我的树绑定到数据结构,如下所示:

<TextBlock x:Name="HeaderTextBlock" Text="{Binding Path=Header}" />
Run Code Online (Sandbox Code Playgroud)

我想要做的是在我的RichTreeView中定义每个成员的名称,允许它适应一系列不同的数据结构,如下所示:

class MyItem
{
    string Name { get; set; }
    ObservableCollection<MyItem> Items;
}

<uc:RichTreeView ItemSource={Binding Source={StaticResource MyItemsProvider}} 
    HeaderProperty="Name" ChildrenProperty="Items" />
Run Code Online (Sandbox Code Playgroud)

有没有办法将UserControl中的绑定路径公开为该UserControl的公共属性?还有其他方法可以解决这个问题吗?

c# data-binding wpf

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

包含百分号(%)的IIS反向代理重新编码URL

我正在尝试使用IIS 7.5,应用程序请求路由 3.0(ARR)和URL重写 2.0 为Jenkins设置反向代理。

我的代理服务器大多数都在工作,但是遇到包含百分号(%)的URL的问题。

无论我如何尝试,代理都坚持对重写的URL中的百分号进行解码或重新编码。

这就是我想要重写URL的方式:

http://my.proxy/a%2Fb -> http://my.host:8080/a%2Fb
Run Code Online (Sandbox Code Playgroud)

这是实际重写URL的方式:

http://my.proxy/a%2Fb -> http://my.host:8080/a/b
- or -
http://my.proxy/a%2Fb -> http://my.host:8080/a%252Fb
Run Code Online (Sandbox Code Playgroud)

如何获得IIS \ ARR \ Rewrite来停止对重写的URL进行重新编码?

我尝试过的事情:

  1. 普通的反向代理(将URL重写为http://my.host:8080/a/b):

    <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="(.*)" ignoreCase="true" /> <action type="Rewrite" url="http://my.host:8080/{R:1}" /> </rule>

  2. 使用UNENCODED_URL服务器变量(将URL重写为http://my.host:8080/a%252Fb):

    <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="(.*)" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{UNENCODED_URL}" pattern="/(.*)" /> </conditions> <action type="Rewrite" url="http://my.host:8080/{C:1}" /> </rule>

  3. 只需直接输入网址(作为测试-还将网址重写为http://my.host:8080/a%252Fb):

    <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="(.*)" …

iis reverse-proxy urlencode url-rewrite-module arr

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

重载方法以支持引用类型和可空类型

我有一个扩展方法,我想重载,所以它可以处理引用类型和可空值的类型.但是,当我尝试这样做时,我得到"已经宣布具有相同签名的成员".C#不能where在我的泛型方法上使用限定符来区分它们吗?使这项工作变得明显的方法是给每个方法一个不同的名称,但这对我来说似乎不是一个非常优雅的解决方案.这项工作的最佳方法是什么?

例:

public static T Coalesce<T>(this SqlDataReader reader, string property) where T : class
{
    return reader.IsDBNull(reader.GetOrdinal(property))
               ? null
               : (T) reader[property];
}

public static T? Coalesce<T>(this SqlDataReader reader, string property) where T : struct
{
    return reader.IsDBNull(reader.GetOrdinal(property))
               ? null
               : (T?)reader[property];
}

// Usage
var id = reader.Coalesce<System.Guid?>("OptionalID");
Run Code Online (Sandbox Code Playgroud)

c# generics extension-methods nullable

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

C#Count()扩展方法性能

如果在具有属性的Count()情况下调用LINQ 扩展方法(例如),该方法是否查找该属性并将其返回(而不是通过枚举它来计算项目)?以下测试代码似乎表明它确实:IEnumerable<T>CountList<T>Count()

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;

namespace CountSpeedTest
{
    // Output:
    // List      - CLR : 0 ms
    // Enumerate - CLR : 10 ms
    // List      - Mine: 12 ms
    // Enumerate - Mine: 12 ms
    class Program
    {
        private const int Runs = 10;
        private const int Items = 1000000;

        static void Main(string[] args)
        {
            var total = new long[] {0, 0, 0, 0};
            for (int …
Run Code Online (Sandbox Code Playgroud)

c# linq extension-methods count

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

WCF over TCP,具有用户名验证且没有证书

我正在使用WCF进行各种.NET应用程序之间的通信.这些服务都在同一个私有子网上,因此我想避免加密和证书的复杂性和性能开销.但是,我确实需要基本的用户名/密码支持,因为请求都是根据我们的自定义MembershipProvider进行身份验证的.

我们目前正在使用具有清除用户名绑定的 HTTP,并且运行良好.但是,我想使用TCP来提高性能.是否可以通过NetTcpBinding进行简单的用户名/密码身份验证(Clear Username Binding的方式),而无需使用证书,加密等?

wcf nettcpbinding

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

可编辑的WPF GridView行

我正在尝试创建一个数据绑定WPF GridView,其行可以是只读的或可编辑的(通过双击或通过上下文菜单).如果任何可编辑控件失去焦点,我希望该行返回只读状态.我正在寻找的功能与此示例非常相似,但同时编辑整行(而不是单个单元格).有谁知道如何实现这个?

c# wpf gridview

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