c# - 从 C# WPF 中的另一个类访问控件的属性

标签 c# wpf class controls properties

我对类之间的可见性感到困惑。请帮我解决这个新手问题。

我有两个控件(来自默认 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/

相关文章:

python - 在 Tkinter 类 python 中居中和调整窗口框架的大小

python - 继承上下文管理器的pythonic方式是什么

c# - AppDomains 和调试符号

c# - AutoMapper - 映射子列表时非常奇怪的行为

c# - 如何在 c# 中不使用 httppostedfilebase 发送电子邮件附件?

c# - wpf 验证 - 我怎样才能让这个代码在输入发生时触发验证(离开字段时比较)

c# - 以编程方式管理 IIS

wpf - 如何确定 Storyboard是否有动画

wpf - Powershell WPF表单将文本框背景更改为图像

python - 使用类方法作为 GSL QAGS 的被积函数