XAML和WPF – 将变量传递给XAML Windows

我是WPF的新手,我正在尝试加载XAML窗口并在其构造函数中将变量传递给此XAML,因为我需要它从此传递的变量中加载一些项目。

有人能指点我的方向吗? 如何启动XAML窗口并为其提供变量?

在此先感谢.. Erika

尝试使用MVVM(Model-View-ViewModel)模式。

你需要型号:

class Person { public string Name { get; set; } } 

View是您的窗口或UserControl。

ViewModel可以是这样的:

 class PersonViewModel : INotifyPropertyChanged { private Person Model; public ViewModel(Person model) { this.Model = model; } public string Name { get { return Model.Name; } set { Model.Name = value; OnPropertyChanged("Name"); } } public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyName) { var e = new PropertyChangedEventArgs(propertyName); PropertyChangedEventHandler changed = PropertyChanged; if (changed != null) changed(this, e); } } 

然后,您需要为窗口指定DataContext:

 View.DataContext = new PersonViewModel(somePerson); 

然后在XAML中定义绑定:

      

MVVM使代码非常优雅和简单。

您也可以尝试使用PRISM或Caliburn( http://caliburn.codeplex.com/ )框架,但它们更复杂。

通常,在WPF中,您将创建要加载的项目,并将Window(或UserControl)的DataContext设置为包含项目的类。 然后,您可以直接绑定到这些,以便从XAML进行自定义显示。

我的问题是我想访问XAML窗口之外的类,而不是通过Binding与相关代码通信。 为此,我需要做的就是创建一个静态类来保存我需要的值。 很简单,但解决方案让我逃脱了。 这是解决问题的一种相当肮脏的方式,但它可以解决问题。

我要感谢两位帮助我理解MVVM架构的贡献者,因为我之前并没有真正理解过。

非常感谢您的回复,如果我的问题很容易被误解,那就很抱歉! 有时我不太善于传达我的想法..

如果你想在MVVM上看到更多,那么看看这个(MVVM非常强大,是开发可测试代码的好方法):

http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

它应该让你对MVVM有一个很好的了解。 您可以在标题下面下载一个示例:代码下载可从MSDN代码库获得。