从C#代码动态切换WPF网格列的可见性

我的问题是:我无法找到如何切换WPF网格列的可见性。 假设遵循XAML标记: Aferwards网格中充满了一些控件等。现在我想从C#代码中动态隐藏一个列。 我已经尝试通过将列的定义宽度设置为零来实现此目的,例如Column1.Width = 0 。 这有效,但我真的不喜欢这个解决方案 – 真的没有更好的方法吗? 我正在寻找类似myGrid.Columns[0].Visibility = COLLAPSED东西myGrid.Columns[0].Visibility = COLLAPSED或Column1.Visibility = HIDDEN 。 我找不到那样的东西 – 任何想法?

按两个条件排序,字符串升序,int升序

如何根据两个不同的标准进行排序? 例如,我有人物对象,如: 具有FirstName (字符串), LastName和Rank (int)属性的Person 。 像这样的示例数据: Xavier Smith 1 Alexander Smith 2 Alexander Smith 1 Bob Hawke 2 它应按字母顺序排序FirstName,然后按排名排序,例如: Alexander Smith 1 Alexander Smith 2 Bob Hawke 2 Xavier Smith 1 到目前为止,我已经尝试了以下内容,但它无法正常工作: peopleList是List peopleList.Sort(new Comparison((x,y) => x.Rank.CompareTo(y.Rank))); peopleList.Sort(new Comparison((x, y) => string.Compare(x.Name, y.Name))); 谢谢 编辑:为了避免更改我的代码太多,我真的想保留列表,如果我将上面的行更改为: peopleList.OrderBy(person => person.FirstName).ThenBy(person => person.Rank).ToList(); 会给出完全相同的列表,只是正确排序,对吗?

在实现自己的IUserStore时,类上的“可选”接口实际上是可选的吗?

我正在使用Microsoft的Asp.Net Identity框架版本2,并且正在实现我自己的IUserStore。 我的新类MyUserStore实现了IUserStore接口和IUserPasswordStore ,这是将它与UserManager类一起使用所需的。 或者至少这是我从阅读教程中收集的内容,如下所示 : “身份系统中所需的一个接口是IUserStore” – Scott Allen 但是,当我运行代码时,情况似乎并非如此。 我初始化我的经理: var uMan= new UserManager(new MyUserStore()); var sMan = new SignInManager(uMan,authCtxFromOwin); 当执行SignInManager上的sMan.PasswordSignIn(…)时,无论如何,SignInManager始终在UserManager中运行依赖于可选接口的function。 以下是SignInManager类中PasswordSignInAsync方法的来源: public virtual async Task PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout) { … if (await UserManager.IsLockedOutAsync(user.Id).WithCurrentCulture()) { return SignInStatus.LockedOut; } if (await UserManager.CheckPasswordAsync(user, password).WithCurrentCulture()) { return await SignInOrTwoFactor(user, isPersistent).WithCurrentCulture(); } […]

如何处理一个密封在.NET库中的要扩展的类?

我正在阅读有关如何处理想要在.NET Framework库中扩展密封类的问题的地方。 这通常是一项常见且有用的任务,所以它让我思考,在这种情况下,有什么解决方案? 我相信在我读过的文章中有一种“方法”可以扩展密封类,但我现在不记得了(它不是扩展方法)。 还有别的办法吗? 谢谢

调试.NET内存泄漏 – 如何知道什么是什么?

我正在开发一个似乎存在内存泄漏的.NET应用程序。 我知道教科书的答案,事件应该取消订阅,一次性物品应该处理等… 我有一个可以重现错误的测试工具。 在某个类的终结器中,我写入控制台 public class Foo { // Ctor public Foo() { } ~public Foo() { Console.WriteLine(“Foo Finalized”); } } 在测试工具中,我创建了一个Foo实例(它反过来创建并与数百种其他类型交互)然后删除它并调用垃圾收集器。 我发现从未调用过Foo Finalizer。 我有一个类似的类与此设置,最终确定为控制测试。 所以我的问题是: 我怎样才能确定使用商业或开源工具究竟是什么引用了Foo? 我拥有dotTrace Memory Profiler的专业许可,但无法从帮助文件中找出如何使用它。 更新:我现在使用dotMemory 4.0 ,这是(好的,但无法使用的)dotTrace Memory 3.5的inheritance者。

如何从WPF中的ComboBox获取文本值?

这可能是C#101所涵盖的内容,但我无法在谷歌或堆栈溢出的任何地方找到这个问题的易于理解的答案。 有没有更好的方法从combobox中返回文本值而不使用我想出的这种糟糕的工作? private void test_site_SelectionChanged(object sender, SelectionChangedEventArgs e) { string cmbvalue = “”; cmbvalue = this.test_site.SelectedValue.ToString(); string[] cmbvalues = cmbvalue.Split(new char[] { ‘ ‘ }); MessageBox.Show(cmbvalues[1]); } 请不要强硬我,我现在真的只是拿起c#和OOP。

模型类(实体)中的dependency injection

我正在使用Entity Framework Code-First构建ASP.NET Core MVC应用程序。 我选择实现一个简单的存储库模式,为我创建的所有模型类提供基本的CRUD操作。 我选择遵循http://docs.asp.net中提供的所有建议,DI就是其中之一。 在.NET 5中,dependency injection非常适用于我们不直接实例化的任何类(例如:控制器,数据存储库,……)。 我们只需通过构造函数注入它们,并在应用程序的Startup类中注册映射: // Some repository class public class MyRepository : IMyRepository { private readonly IMyDependency _myDependency; public MyRepository(IMyDependency myDependency) { _myDependency = myDependency; } } // In startup.cs : services.AddScoped(); services.AddScoped(); 我遇到的问题是,在我的一些模型类中,我想注入一些我声明的依赖项。 但我认为我不能使用构造函数注入模式,因为模型类通常是明确地实现的,因此,我需要为自己提供依赖项,我不能。 所以我的问题是:是否有另一种方式比构造函数注入注入依赖项,以及如何? 我是在考虑属性模式或类似的东西。

获取Content-Disposition参数

如何使用WebClient获取从WebAPI控制器返回的Content-Disposition参数? WebApi控制器 [Route(“api/mycontroller/GetFile/{fileId}”)] public HttpResponseMessage GetFile(int fileId) { try { var file = GetSomeFile(fileId) HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new StreamContent(new MemoryStream(file)); response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue(“attachment”); response.Content.Headers.ContentDisposition.FileName = file.FileOriginalName; /********* Parameter *************/ response.Content.Headers.ContentDisposition.Parameters.Add(new NameValueHeaderValue(“MyParameter”, “MyValue”)); return response; } catch(Exception ex) { return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex); } } 客户 void DownloadFile() { WebClient wc = […]

List 没有实现SyncRoot!

每个人都使用很多List。 我需要迭代这个列表,所以我使用已知的SyncRoot模式。 最近我在这篇文章中注意到应该避免使用SyncRoot以支持“嵌入式”线程安全(每个方法将锁定私有对象而不使用SyncRoot属性暴露它)。 我能理解,部分我同意这一点。 问题是List 类没有实现SyncRoot属性,即使实现了ICollection接口,它暴露了SyncRoot属性。 我说这会使代码失效 List list = new List() list.SyncRoot; 给我以下编译器错误: 错误CS0117:’System.Collections.Generic.List’不包含’SyncRoot’的定义 …如果这是真的,我怎么能在迭代它时同步List 类型的公共属性?

在阅读记录时我应该使用SQL事务吗?

SQL事务用于插入,更新,但是它应该用于读取记录吗?