【问题标题】:C# WPF Crash in the constructor during the initialization of a TextBox element?在初始化 TextBox 元素期间,C# WPF 在构造函数中崩溃?
【发布时间】:2015-09-05 21:45:09
【问题描述】:

我有类人:

public class Person {

public Person(string nome) {
        this.Name.Text = nome;
        this.Name.Background = Brushes.Red;
        System.Windows.MessageBox.Show(Name.Text.ToString()); 
    }
    public TextBox Name;
}

总的来说,我已经

List<Person> items = new List<Person>();
Person p = new Person("Samantha");
items.Add(p);
listView.ItemsSource = items;

现在,在 xaml 文件中,我有一个包含 listView 的 GridView。如果我输入字符串名称而不是文本框名称,一切都可以。但是我需要背景颜色,所以我使用了 TextBox。

问题是构造函数 Person 在 "this.Name.Text = nome;" 中崩溃我不明白为什么。谢谢大家

【问题讨论】:

  • 您没有初始化 TextBox,因此在尝试设置文本值时会出现空引用异常。无论如何,这不是你应该这样做的方式。
  • @LeeO。谢谢,我忘记了...我可以再问你一件事吗?在我的 xaml 中: 如果名称是字符串,则显示。但如果我有一个 TextBox,它什么都看不到..
  • 我假设 ListView 的 ItemsSource 绑定到 List 所以 GridView 的每一行的 DataContext 都是一个 Person。您可能希望绑定到 Name.Text 值。请不要这样做。摆脱 TextBox 并为该属性正确使用字符串。提出一个新问题以了解如何设置颜色。
  • 你的类有太多的责任——它不应该对自己的表现负责,这也是PersonTextBox(或背后的框架)之间的一种耦合。如果没有框架能够表示它们,您的 Person 对象将无法单独存在。
  • 我明白了,谢谢你的建议:)

标签: c# .net wpf visual-studio listview


【解决方案1】:

因为您已经声明了一个名为 Name 的 TextBox(多么糟糕的名称!请更改它)并且您还没有创建它! 您需要创建一个新的 TextBox 实例才能使用它。

然后我们可以讨论你为什么要在课堂上放置一个 TextBox ;-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 2018-06-30
    • 2020-10-04
    相关资源
    最近更新 更多