【发布时间】:2017-12-13 19:39:16
【问题描述】:
我目前有一个简单的 WPF 应用程序,在 MainWindow 中我将有一个变量(在这种情况下,变量是一个保存数据的类)。然后我有一个具有相同变量的用户控件。 目前,我正在使用 ref 关键字传递变量,它工作得很好,但是,这是保存/好习惯吗?有没有更好的方法将这两个变量联系在一起?
我知道 DependencyProperty 的存在,但是我无法让它工作。
主窗口:
public partial class MainWindow : Window
{
private TestClassWithInfo m_SelectedInfo;
public MainWindow()
{
InitializeComponent();
m_SelectedInfo = new DrawingInformation();
TestGridUC mp = new TestGridUC(ref m_SelectedInfo);
TestCanvas.Childrens.Add(mp);
}
}
TestGridUI:
public partial class TestGridUC : UserControl {
private TestClassWithInfo m_SelectedInfo;
public TestGridUC (ref TestClassWithInfo e)
{
InitializeComponent();
m_SelectedInfo = e;
}
}
TestClassWithInfo:
public class TestClassWithInfo
{
public Image imageTest;
public int intTest;
public TestClassWithInfo ()
{
m_img = null;
m_layer = 0;
}
}
【问题讨论】:
-
请注意,
ref关键字在这里毫无意义,它什么也不做。除此之外,您将null传递给 TestGridUC 构造函数,因为您仅在调用构造函数后才为 m_SelectedInfo 赋值。继续研究依赖属性。在 UserControl 类中声明一个,然后将其绑定到 MainWindow 的属性(或者更好地绑定到分配给 MainWindow 的 DataContext 的视图模型对象的属性)。但首先,请阅读 WPF 中的数据绑定和 MVVM。 -
好的,谢谢,空引用实际上是输入问题时的输入错误,我首先创建了实例,然后将引用传递给它。
-
你是工程师,做一个反叛者,但既然你在问......这绝对不是最好的方法。有人在下面标记了答案,但我将其标记为备份,因为如果您有兴趣使用 DependencyProperties(这很棒),那么我建议您按照建议花很短的时间学习它。如果没有更好的方法,如果您有兴趣,我们可以进一步讨论。
标签: c# wpf dependency-properties ref