我对类之间的可见性感到困惑。请帮我解决这个新手问题。
我有两个控件(来自默认 WPF 工具箱的 DatePickers),它们位于不同的窗口中,因此位于不同的类中。我可以从其 native 类中轻松访问这些控件属性,例如 datePicker1.Text
,即在其 native 窗口中,但是当我尝试从另一个窗口访问 datePicker1.Text
时,我一无所获。
我尝试将一个 datePicker 的值分配给另一个,在我的代码中使用对窗口的引用:
string testStr;
...
AnotherWindow aw = new AnotherWindow();
testStr = aw.datePicker2.Text;
datePicker1.Text = testStr;
它不起作用
我还尝试通过一个类的公共(public)属性来做到这一点,例如:
public partial class AnotherWindow : Window
{
....
public string dateNearest
{
get { return datePicker2.Text; }
set { datePicker2.Text = value; }
}
....
然后在另一个窗口中使用它:
string testStr;
...
AnotherWindow aw = new AnotherWindow();
testStr = aw.dateNearest;
但也没有赋值。
请帮助我理解这个基本问题。我知道还有其他方法可以访问 WPF 中的值,例如数据绑定(bind),但我想先了解基础知识。
最佳答案
不幸的是,WPF 的基础是数据绑定(bind)。以任何其他方式进行操作都是“违背常理”,是一种不好的做法,而且编码和理解的复杂度通常要高出几个数量级。
对于您手头的问题,如果您有数据要在 View 之间共享(即使它只是一个 View ),请创建一个 View 模型 类,其中包含以下属性表示数据,并绑定(bind)到 View 中的属性。
在您的代码中,仅管理您的 View 模型类,不要使用其视觉控件和视觉组合触及实际 View 。
关于c# - 从 C# WPF 中的另一个类访问控件的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1978704/