繁体   English   中英

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

[英]XAML and WPF - Passing Variables to 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中定义绑定:

<UserControl x:Class="SomeApp.View"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="300" Width="300">
<Grid>
    <TextBlock Text="{Binding Name}" />
<Grid>    
<UserControl>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM