WPF / C#将两个变量链接在一起

时间:2017-12-13 19:39:17

标签: c# wpf dependency-properties ref

我目前有一个简单的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;
    }
}

2 个答案:

答案 0 :(得分:1)

答案 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公共属性。