javascript

java

python

c#

android

node.js

reactjs

c++

php

html

jquery

css

git

.net

ios

ruby-on-rails

sql

c

string

ruby

.net-如何基于二维数组填充WPF网格

我有一个二维对象数组,我基本上想将每个数据绑定到WPF网格中的一个单元。 目前,我正在进行这项工作,但是我正在按程序进行大部分工作。 我创建正确数量的行和列定义,然后遍历单元格并创建控件,并为每个控件设置正确的绑定。

至少我希望能够使用模板在xaml中指定控件和绑定。 理想情况下,我希望摆脱程序代码,而仅通过数据绑定来完成所有操作,但是我不确定这是可能的。

这是我当前正在使用的代码:

public void BindGrid()
{
    m_Grid.Children.Clear();
    m_Grid.ColumnDefinitions.Clear();
    m_Grid.RowDefinitions.Clear();

    for (int x = 0; x < MefGrid.Width; x++)
    {
        m_Grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star), });
    }

    for (int y = 0; y < MefGrid.Height; y++)
    {
        m_Grid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star), });
    }

    for (int x = 0; x < MefGrid.Width; x++)
    {
        for (int y = 0; y < MefGrid.Height; y++)
        {
            Cell cell = (Cell)MefGrid[x, y];                    

            SolidColorBrush brush = new SolidColorBrush();

            var binding = new Binding("On");
            binding.Converter = new BoolColorConverter();
            binding.Mode = BindingMode.OneWay;

            BindingOperations.SetBinding(brush, SolidColorBrush.ColorProperty, binding);

            var rect = new Rectangle();
            rect.DataContext = cell;
            rect.Fill = brush;
            rect.SetValue(Grid.RowProperty, y);
            rect.SetValue(Grid.ColumnProperty, x);
            m_Grid.Children.Add(rect);
        }
    }

}
trans by 2019-11-19T02:35:57Z

c#-类型“ System.Int32”的表达式不能用于返回类型“ System.Object”

我正在尝试制作一个简单的脚本系统,该系统将用于打印标签。 过去,我已经进行了毫无问题的思考,但是现在我尝试使用Lambda函数来实现,以便可以缓存这些函数以供重用。

到目前为止,我的代码如下...

public static string GetValue<T>(T source, string propertyPath) {

    try {

        Func<T, Object> func;

        Type type = typeof(T);
        ParameterExpression parameterExpression = Expression.Parameter(type, @"source");
        Expression expression = parameterExpression;
        foreach (string property in propertyPath.Split('.')) {
            PropertyInfo propertyInfo = type.GetProperty(property);
            expression = Expression.Property(expression, propertyInfo);
            type = propertyInfo.PropertyType;
        }

        func = Expression.Lambda<Func<T, Object>>(expression, parameterExpression).Compile();

        object value = func.Invoke(source);
        if (value == null)
            return string.Empty;
        return value.ToString();

    }
    catch {

        return propertyPath;

    }

}

在某些情况下,这似乎可行,但在其他情况下,则失败。 问题似乎出在我试图将值作为对象返回的过程中,而不管实际的数据类型如何。 我尝试这样做是因为我不知道在编译时数据类型是什么,但是从长远来看,我只需要一个字符串。

每当我尝试访问Int32类型的属性时,都会收到此消息标题中所示的异常-但我也为Nullable类型和其他类型获取此异常。  当我尝试将表达式编译到函数中时,将引发异常。

有人可以建议我在保持Lambda功能的同时如何进行不同处理,以便可以缓存访问器吗?

trans by 2019-11-18T22:03:23Z

相当于ASP.NET MVC 5的HttpException的ASP.NET Core

在ASP.NET MVC 5中,您可以使用HTTP代码抛出HttpException,这将像这样设置响应:

throw new HttpException((int)HttpStatusCode.BadRequest, "Bad Request.");

26.20178679791617024在ASP.NET Core中不存在。 等效代码是什么?

trans by 2019-11-18T21:28:54Z

CodeGo.net>如何避免System.IO.PathTooLongException?

我们不断遇到这个问题...

例:

如果我有一个文件要复制到另一个目录或UNC共享中,并且路径长度超过248(如果我没记错的话),则抛出PathTooLongException。 有没有解决此问题的方法?

PS:是否有任何注册表设置将此路径设置为更长的字符集?

trans by 2019-11-18T15:15:11Z

如何在.NET测试中传递模拟的HttpClient?

我有一个使用GetAsync来检索一些PostAsync数据的服务。 大!

当然,我不希望我的单元测试击中实际的服务器(否则,这是一个集成测试)。

这是我的服务ctor(使用依赖注入...)

public Foo(string name, HttpClient httpClient = null)
{
...
}

我不确定如何使用...说出来。..GetAsyncPostAsync

我想确保当我的服务呼叫GetAsyncPostAsync ..时,我可以伪造这些呼叫。

有什么建议我可以做到吗?

我-希望-我不需要自己做包装器..因为这很糟糕:(微软不能对此进行疏忽,对吗?

(是的,包装很容易..我以前做过包装……但这是重点!)

trans by 2019-11-18T15:03:47Z

内置的.NET异常指示非法对象状态?

如果遇到非法状态,应该抛出什么异常-例如,初始化方法只应被调用一次才能被调用? 我真的看不到任何有意义的内置异常。 这似乎应该放在框架中-我不是在正确的地方戳吗?

trans by 2019-11-18T13:24:59Z

c#-面向单个开发人员的最佳持续集成设置(.NET)

我正在寻找一种轻巧,易于设置的CI服务器,该服务器可以与Visual Studio和Resharper一起在笔记本电脑上运行。 我显然在看所有大名鼎鼎的公司,例如CruiseControl,TeamCity等,但对我来说,最大的考虑因素是易于设置和较小的内存占用。

编辑:我也想对大2/3以外的其他解决方案提出一些建议...

编辑:如果没有其他人要添加任何内容,我将接受一个答案?

trans by 2019-11-18T08:07:56Z

.net-Visual Studio 2017和2019突出显示scrollb中所选单词的出现

当我标记一个单词(任何形式)时,我希望该单词的所有出现(在该特定文件中)在右侧滚动栏中突出显示。

这是VS2015和VS2013中的功能。 我无法想象他们将其删除了,我只是不知道如何打开它。 “工具”->“选项”(图像)中似乎没有任何可能帮助我。enter image description here

附言 我正在使用Visual Studio 17专业版。谢谢。

trans by 2019-11-18T06:26:14Z

.net-CurrentCulture,InvariantCulture,CurrentUICulture和InstalledUICultu之间的差异

CurrentCultureInvariantCultureCurrentUICultureInstalledUICultureSystem.Globalization.CultureInfo有什么区别?

trans by 2019-11-18T06:03:42Z

c#-.net自定义配置如何不区分大小写解析枚举ConfigurationProperty

我在ConfigurationSection中拥有的ConfigurationProperty之一是ENUM。 当.net从配置文件解析此枚举字符串值时,如果大小写不完全匹配,则将引发异常。

解析此值时是否有忽略大小写的地方?

trans by 2019-11-18T04:00:21Z

.net-IStructuralEquatable和IStructuralComparable解决了什么问题?

我注意到在.NET 4中已经添加了这两个接口以及几个相关的类。 我已经阅读了几个有关它们的博客,但是我仍然无法弄清楚他们解决了.NET 4之前棘手的问题。

IStructuralEquatableIStructuralComparable有什么用途?

trans by 2019-11-17T23:52:35Z

.net-Project.json定义dnx451与.dotnet(4.51)

我有一些在asp vnext中,我可以定义3种运行时类型

  • dnxCore
  • dnx451
  • 网络

在Project.json中,它看起来像这样:

"frameworks": 
{
    "dotnet": { },
    "dnx451": { },
    "dnxcore50": { }
}^

和用户界面对此表示支持

enter image description here

我假设以下内容:

dnxCore是新的.net Core框架。

dotnet是先前的运行时

dnx451:在project.json中定义“ dotnet”或“ dnx451”时有什么不同?

都不应该都在.net执行运行时中运行吗?

此外,根据我选择的项目模板(vNext ClassLib或vNext Console Lib),默认包含一个或另一个。

trans by 2019-11-17T22:53:10Z

.net-VB.NET:如何防止用户在ComboBox中输入

如何防止用户在组合框中输入内容,以便用户只能选择已定义列表中的一项?

trans by 2019-11-17T03:28:32Z

.net-C#数据结构,如字典,但没有值

C#中是否有像字典一样的数据结构,但是仅具有键而没有值。 我基本上想要一个可以快速查找并查看列表中是否有特定值的整数列表。 当然,对于我当前的使用,列表不会导致任何性能问题,但是它似乎与我的代码正在执行的意图不太匹配。

trans by 2019-11-17T02:31:42Z

c#-空字符串是一种特殊情况?

我读了乔恩·斯基特(Jon Skeet)的测验,不知道为什么我的第二个样本不能像第一个样本那样起作用。

为什么会产生true

object x = new string("".ToArray());
object y = new string("".ToArray());
Console.WriteLine(x == y); //true

但这不是:

var k="k";
//string.intern(k); // doesn't help
object x = new string(k.ToArray());
object y = new string(k.ToArray());
Console.WriteLine(x == y); //false

我正在将vs 4.5与fw 4.5一起使用。

幸运的是,我还安装了vs2005,结果相同:

enter image description here

trans by 2019-11-17T01:52:51Z

C#-ICommand MVVM实现

因此,在我正在执行的特定MVVM实现中,我需要几个命令。 我真的厌倦了一个接一个地实现ICommand类,所以我想出了一个解决方案,但是我不知道它有多好,因此,这里的任何WPF专家的投入都会非常感谢。 并且,如果您可以提供更好的解决方案,那就更好了。

我所做的是一个ICommand类和两个将对象作为参数的委托,一个委托为void(对于OnExecute),另一个为bool(对于OnCanExecute)。 因此,在ICommand的构造函数(由ViewModel类调用)中,我发送了两个方法,并且在每个ICommand方法上,我都调用了委托的方法。

它的确很好,但是我不确定这是不好的方法还是有更好的方法。 以下是完整的代码,任何输入都会受到赞赏,甚至是负面的,但请保持建设性。

视图模型:

public class TestViewModel : DependencyObject
{
    public ICommand Command1 { get; set; }
    public ICommand Command2 { get; set; }
    public ICommand Command3 { get; set; }

    public TestViewModel()
    {
        this.Command1 = new TestCommand(ExecuteCommand1, CanExecuteCommand1);
        this.Command2 = new TestCommand(ExecuteCommand2, CanExecuteCommand2);
        this.Command3 = new TestCommand(ExecuteCommand3, CanExecuteCommand3);
    }

    public bool CanExecuteCommand1(object parameter)
    {
        return true;
    }

    public void ExecuteCommand1(object parameter)
    {
        MessageBox.Show("Executing command 1");
    }

    public bool CanExecuteCommand2(object parameter)
    {
        return true;
    }

    public void ExecuteCommand2(object parameter)
    {
        MessageBox.Show("Executing command 2");
    }

    public bool CanExecuteCommand3(object parameter)
    {
        return true;
    }

    public void ExecuteCommand3(object parameter)
    {
        MessageBox.Show("Executing command 3");
    }
}

ICommand:

public class TestCommand : ICommand
{
    public delegate void ICommandOnExecute(object parameter);
    public delegate bool ICommandOnCanExecute(object parameter);

    private ICommandOnExecute _execute;
    private ICommandOnCanExecute _canExecute;

    public TestCommand(ICommandOnExecute onExecuteMethod, ICommandOnCanExecute onCanExecuteMethod)
    {
        _execute = onExecuteMethod;
        _canExecute = onCanExecuteMethod;
    }

    #region ICommand Members

    public event EventHandler CanExecuteChanged
    {
        add { CommandManager.RequerySuggested += value; }
        remove { CommandManager.RequerySuggested -= value; }
    }

    public bool CanExecute(object parameter)
    {
        return _canExecute.Invoke(parameter);
    }

    public void Execute(object parameter)
    {
        _execute.Invoke(parameter);
    }

    #endregion
}
trans by 2019-11-17T01:05:49Z

暴露列表成员的IEnumerable vs IReadonlyCollection vs ReadonlyCollection

我花了好几个小时来思考暴露名单成员的主题。 在与我类似的问题中,John Skeet给出了一个很好的答案。 请随时查看。

ReadOnlyCollection或IEnumerable用于公开成员集合?

对于公开列表,我通常会很偏执,尤其是在开发API时。

我一直使用IEnumerable公开列表,因为它很安全,并且具有很大的灵活性。 让我在这里举一个例子

public class Activity
{
    private readonly IList<WorkItem> workItems = new List<WorkItem>();

    public string Name { get; set; }

    public IEnumerable<WorkItem> WorkItems
    {
        get
        {
            return this.workItems;
        }
    }

    public void AddWorkItem(WorkItem workItem)
    {
        this.workItems.Add(workItem);
    }
}

任何针对IEnumerable进行编码的人在这里都是非常安全的。 如果以后我决定使用有序列表或类似的东西,它们的代码都不会中断,而且还是不错的。 IEnumerable的缺点是可以将其转换回此类之外的列表。

因此,许多开发人员使用ReadOnlyCollection公开成员。 这是非常安全的,因为它永远都不能返回列表。 对我来说,我更喜欢IEnumerable,因为它提供了更大的灵活性,如果我想实现不同于列表的东西的话。

我提出了一个我更喜欢的新主意。 使用IReadOnlyCollection

public class Activity
{
    private readonly IList<WorkItem> workItems = new List<WorkItem>();

    public string Name { get; set; }

    public IReadOnlyCollection<WorkItem> WorkItems
    {
        get
        {
            return new ReadOnlyCollection<WorkItem>(this.workItems);
        }
    }

    public void AddWorkItem(WorkItem workItem)
    {
        this.workItems.Add(workItem);
    }
}

我觉得这保留了IEnumerable的一些灵活性,并且封装得很好。

我发布了这个问题,以征询我的想法。 您是否喜欢此解决方案而不是IEnumerable? 您认为使用ReadOnlyCollection的具体返回值更好吗? 这是一场辩论,我想尝试看看我们所有人都能提出哪些优点/缺点。

预先感谢您的输入。

编辑

首先,感谢大家为这里的讨论做出了巨大贡献。 我确实从每一个人中学到了很多东西,并衷心感谢您。

我要添加一些其他方案和信息。

IReadOnlyCollection和IEnumerable有一些常见的陷阱。

考虑下面的示例:

public IReadOnlyCollection<WorkItem> WorkItems
{
    get
    {
        return this.workItems;
    }
}

即使接口是只读的,也可以将上述示例转换回列表并进行突变。 尽管具有相同的名称,但该接口不会保证不变性。 您需要提供一个不变的解决方案,因此您应该返回一个新的ReadOnlyCollection。 通过创建一个新列表(本质上是一个副本),对象的状态是安全可靠的。

Richiban在他的评论中说得最好:界面仅保证某些事情可以做,而不保证它不能做

参见以下示例。

public IEnumerable<WorkItem> WorkItems
{
    get
    {
        return new List<WorkItem>(this.workItems);
    }
}

可以对上面的内容进行强制转换和变异,但是您的对象仍然是不变的。

框外语句的另一个例子是集合类。 考虑以下:

public class Bar : IEnumerable<string>
{
    private List<string> foo;

    public Bar()
    {
        this.foo = new List<string> { "123", "456" };
    }

    public IEnumerator<string> GetEnumerator()
    {
        return this.foo.GetEnumerator();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return this.GetEnumerator();
    }
}

上面的类可以具有按所需方式对foo进行突变的方法,但是您的对象永远不能转换为任何种类的列表并进行突变。

卡斯滕·弗曼(CarstenFührmann)对IEnumerables中的收益回报表提出了一个奇妙的观点。

再次谢谢大家。

trans by 2019-11-17T01:01:39Z

.net-如何在MVC中将XML字符串作为操作结果返回

可能重复:
从ASP.NET MVC中的控制器操作返回XML的最佳方法是什么?

我可以将JSON和部分视图(html)作为有效的ActionResult返回,但是如何返回XML字符串呢?

trans by 2019-11-16T08:31:52Z

c#-ASP.NET从会话中删除一项?

哪种方法更好?

Session.Remove("foo");

Session["foo"] = null;

有区别吗?

trans by 2019-11-16T01:45:26Z

.net-C#中的批量更新

为了在数据库中插入大量数据,我曾经将所有插入信息收集到一个列表中,然后将此列表转换为SqlBulkCopy,然后通过SqlBulkCopy将该列表插入数据库。

我将生成的列表发送到哪里
SqlBulkCopy
其中包含我要插入数据库的所有批量数据的信息
并将其传递给我的批量插入操作

InsertData(LiMyList, "MyTable");

其中SqlBulkCopy

 public static void InsertData<T>(List<T> list,string TableName)
        {
                DataTable dt = new DataTable("MyTable");
                clsBulkOperation blk = new clsBulkOperation();
                dt = ConvertToDataTable(list);
                ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
                using (SqlBulkCopy bulkcopy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["SchoolSoulDataEntitiesForReport"].ConnectionString))
                {
                    bulkcopy.BulkCopyTimeout = 660;
                    bulkcopy.DestinationTableName = TableName;
                    bulkcopy.WriteToServer(dt);
                }
        }    

public static DataTable ConvertToDataTable<T>(IList<T> data)
        {
            PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
            DataTable table = new DataTable();
            foreach (PropertyDescriptor prop in properties)
                table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
            foreach (T item in data)
            {
                DataRow row = table.NewRow();
                foreach (PropertyDescriptor prop in properties)
                    row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
                table.Rows.Add(row);
            }
            return table;
        }

现在我想执行更新操作,是否有任何方法可以通过SqlBulkCopy完成插入数据,以便从C#.Net将数据更新到数据库

trans by 2019-11-16T01:40:10Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共97页