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代码库获得。