我目前有一个简单的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;
}
}
答案 0 :(得分:1)
查看MVVM(Model-View-ViewModel)模式
有许多教程&这样的介绍:
或
https://social.technet.microsoft.com/wiki/contents/articles/32164.wpf-mvvm-step-by-step-2.aspx
答案 1 :(得分:1)
我知道DependencyProperty的存在,但是,我无法让它工作。
依赖属性确实是实现它的方法:
public partial class TestGridUC : UserControl
{
public TestGridUC()
{
InitializeComponent();
}
public TestClassWithInfo Info
{
get { return (TestClassWithInfo)GetValue(InfoProperty); }
set { SetValue(InfoProperty, value); }
}
public static readonly DependencyProperty InfoProperty =
DependencyProperty.Register("Info", typeof(TestClassWithInfo), typeof(TestGridUC),
new PropertyMetadata(null /*or initialize to a default of new TestClassWithInfo()*/ ));
}
现在您可以从MainWindow中的xaml绑定到该属性:
<local:TestGridUC
Info="{Binding Info}"></local:TestGridUC>
如果您需要有关该部分的帮助,正如pr177所回答的,有很多关于使用MVVM模式开始使用WPF的教程。这里的基础知识将涉及一个视图模型对象,其中包含您绑定的TestClassWithInfo
公共属性。