I'm pretty new to WPF and i'm trying to load a XAML window and pass a variable to this XAML in its constructor or so, because i need it to load some items from this passed variable.
Could anyone point me to the direction of how to go about this please? How does one start up a XAML window and give it a variable please?
Thanks in advance.. Erika
Try to use MVVM (Model-View-ViewModel) pattern.
You need Model:
class Person
{
public string Name { get; set; }
}
View is your window or UserControl.
ViewModel can be something like that:
class PersonViewModel : INotifyPropertyChanged
{
private Person Model;
public PersonViewModel(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);
}
}
Then you need to specify DataContext for your window:
View.DataContext = new PersonViewModel(somePerson);
And then define bindings in 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 makes code very elegant and easy.
You can also try PRISM or Caliburn (http://caliburn.codeplex.com/) frameworks but they are more complex.
Typically, in WPF, you'd create the items you want to load, and set the Window (or UserControl)'s DataContext to the class that contains your items. You can then bind directly to these in order to do custom display from the XAML.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With