小编Bob*_*ob.的帖子

更新通用列表中元素的最佳方法

假设我们有一个叫做Dog的类,它有两个字符串"Name"和"Id".现在假设我们有一张包含4只狗的清单.如果您想更改"Id"为"2"的Dog的名称,那么最好的方法是什么?

Dog d1 = new Dog("Fluffy", "1");
Dog d2 = new Dog("Rex", "2");
Dog d3 = new Dog("Luna", "3");
Dog d4 = new Dog("Willie", "4");

List<Dog> AllDogs = new List<Dog>()
AllDogs.Add(d1);
AllDogs.Add(d2);
AllDogs.Add(d3);
AllDogs.Add(d4);
Run Code Online (Sandbox Code Playgroud)

c# generic-list

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

View如何知道在WPF中使用什么ViewModel?

有人可以解释View和ViewModel是如何连接的吗?我找不到引用ViewModel的View的xaml或xaml.cs,也没有找到引用View的ViewModel.cs文件中的任何内容,但它们以某种方式连接,并且从ViewModel到View的绑定成员工作.

此外,在每个的构造函数中,只有View的InitializeComponent和ViewModel的基本构造函数(没有View的声明/定义).

谢谢!

c# wpf mvvm

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

如何将字符串值转换为对象属性名称

这是我第一次在C#/ .NET中做这样的事情,并且有点让我想起使用eval()函数或动态脚本和生成HTML在JavaScript中可以轻松完成的事情.我说有一个从用户输入中获取的字符串string input = "foo".现在我想使用该值"foo"作为我拥有的对象的属性名称,cover以这种方式说:

string input = "foo";
//magic to convert string value to be used
//as a object property name goes here maybe...
var success = cover.foo;
Run Code Online (Sandbox Code Playgroud)

C#中有没有办法可以做这样的事情?可能使用反射?我已经尝试了,但我总是带着一个并没有真正解决问题的对象返回.

.net c# string reflection

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

你能把一个方法作为属性变量中默认的setter动作的一部分吗?

如果你有多个属性在setter中实现相同的方法,有没有办法让它成为默认setter的一部分?

如果我有多个属性Filter()在设置时调用它,是否有办法将其推入"基本setter",这样我就不必Filter()在每个setter中都有调用?

private string _MyVal1;
public string MyVal1 {
    get {
        return _MyVal1;
    }
    set {
        _MyVal1 = value;
        Filter();
        OnPropertyChanged("MyVal1");
    }
}

private string _MyVal2;
public string MyVal2 {
    get {
        return _MyVal2;
    }
    set {
        _MyVal2 = value;
        Filter();
        OnPropertyChanged("MyVal2");
    }
}

private string _MyValN;
public string MyValN {
    get {
        return _MyValN;
    }
    set {
        _MyValN = value;
        Filter();
        OnPropertyChanged("MyValN");
    }
}
Run Code Online (Sandbox Code Playgroud)

所以它变成了这样:

private string _MyValN;
public string MyValN {
    get {
        return …
Run Code Online (Sandbox Code Playgroud)

c# setter properties

7
推荐指数
1
解决办法
7405
查看次数

你能在Bitmap图像中将一种颜色更改为另一种颜色吗?

因为Bitmap,有一种MakeTransparent方法,有一种类似的方法可以将一种颜色改变为另一种颜色吗?

// This sets Color.White to transparent
Bitmap myBitmap = new Bitmap(sr.Stream);
myBitmap.MakeTransparent(System.Drawing.Color.White);
Run Code Online (Sandbox Code Playgroud)

有什么东西可以做这样的事吗?

Bitmap myBitmap = new Bitmap(sr.Stream);
myBitmap.ChangeColor(System.Drawing.Color.Black, System.Drawing.Color.Gray);
Run Code Online (Sandbox Code Playgroud)

c# colors bitmap

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

我应该何时在事件聚合器上使用事件处理程序?

我应该何时使用事件处理程序而不是事件聚合器?

在我的代码中,我有两个由父ViewModel控制的ViewModel,我试图决定是否应该使用事件处理程序在它们之间进行通信?或者使用Event Aggregator?它只是简单的方法调用,我不需要在它们之间传递参数.

c# wpf event-handling mvvm eventaggregator

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

你能比较存储为字符串的两个数字而不知道它们代表的数据类型吗?

如果我有两个数字表示为字符串,"100"和"200","100.1"和"200.1",我如何比较它们以查看哪一个更大?

是否有一个通用的Number.Compare(stringA,stringB)来处理数据类型?我使用数据库条目来确定验证规则,但值可能是长,小数,浮点数等,所以我不能创建一个.

c# numbers string-comparison

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

关闭选项卡后如何从 DockManager 中删除 LogicalChildren?

我一直在使用DockManager和。LayoutRootLayoutAnchorablePaneLayoutDocumentPane

<ad:DockingManager x:Name="dockManager" >
  <adLayout:LayoutRoot>
    <adLayout:LayoutPanel x:Name="myLayoutPanel" Orientation="Horizontal">
      <adLayout:LayoutAnchorablePane x:Name="myLayoutAnchorablePane" DockWidth="400"/>
      <adLayout:LayoutDocumentPane x:Name="myDocumentPane" ChildrenCollectionChanged="myDocumentPane_ChildrenCollectionChanged"/>
    </adLayout:LayoutPanel>
  </adLayout:LayoutRoot>
</ad:DockingManager>
Run Code Online (Sandbox Code Playgroud)

然而,我遇到的一个问题是DockManager.LogicalChildren,当我关闭窗口时,进入 的ContentPresenter和 my永远不会被删除,并且会越来越多,直到它开始减慢应用程序的速度。UserControlLayoutDocumentLogicalChildren

当我检测到 时ChildrenCollectionChanged,如何删除与之关联的ContentPresenter和?UserControlLayoutDocument

编辑1:好的,也是LogicalChildrenSystem.Linq.Enumerable.WhereSelectListIterator<System.WeakReference,object>所以我无法从该列表中删除任何内容(而且它只有一个get,并且没有set)。

LayoutDocumentPane.RemoveChild()方法不会对 执行任何操作DockingManager.LogicalChildren,因此我无法弄清楚 是LogicalChildren从哪里提取迭代日期的。

编辑2:所以,我尝试向DocumentClosing事件处理程序添加一个事件DockManager,但它似乎仍然没有LogicalChildren从 DockManager 中删除未使用的事件。

void dockManager_DocumentClosing(object sender, Xceed.Wpf.AvalonDock.DocumentClosingEventArgs e) {
    UserControl uc = e.Document.Content as UserControl;
    e.Cancel …
Run Code Online (Sandbox Code Playgroud)

c# wpf avalondock

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

如何在Entity Framework中仅加载基类型

考虑以下案例:

我有另外两个继承的基类.例如,我们将:

class Base
{

}
class DerivedA : Base
{

}
class DerivedB : Base
{

}
Run Code Online (Sandbox Code Playgroud)

当我向代码请求基本实体时

context.Base.Where(q => q.Id == id).first();

实体框架为每个派生实体生成一组完整的连接,这导致低于可接受的查询性能.什么我要的是只加载基础机构没有它加入到衍生的.

我在这里找到的唯一解决方案是http://blogs.msdn.com/b/alexj/archive/2009/09/17/tip-35-how-to-write-oftypeonly-tentity.aspx.但这对我不起作用.EF仍会产生巨大的查询.

编写如下查询:

context.Base.Where(q => !(q is DerivedA) && !(q is DerivedB)).First();
Run Code Online (Sandbox Code Playgroud)

由于衍生类型的数量不断增加,也不适合我.

除了我提到的那些之外,有没有可能的解决方案?

c# entity-framework entity-framework-4 entity-framework-4.1

4
推荐指数
1
解决办法
2956
查看次数

如何从字符串中删除多个有问题的字符?

这是我的工作代码:

string Input;
string Output;

Input = data;
Output = Input.Replace(@")", "");
Run Code Online (Sandbox Code Playgroud)

在这里,我只是从我的字符串中删除括号")",如果它存在的话.现在我如何扩展像")"这样的违规字符列表,以包括"("和" - "?

我意识到我可以写两个类似输出的语句,但我想知道是否有更好的方法......

c# string

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