Come posso impostare DataContext sulla mia griglia in XAML, anziché nel costruttore?Silverlight: impostazione di DataContext in XAML anziché nel costruttore?
Ecco come lo faccio nel costruttore (LayoutRoot è la griglia XAML definito nel XAML):
this.LayoutRoot.DataContext = this.HPVM;
preferirei farlo proprio in XAML, ma non so come fare riferimento all'oggetto HPVM in XAML. HPVM è una proprietà pubblica sulla classe USerControl.
Funziona correttamente come elencato sopra, ma, ancora una volta, voglio solo sapere come proprietà della classe UserControl in XAML, piuttosto che dover sempre farlo in codice.
Qui è tutto il codice in questione:
<UserControl x:Class="SilverlightApplication1.SLHolePattern" x:Name="HolePatternsControl"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:controls="clr-namespace:Microsoft.Windows.Controls;assembly=Microsoft.Windows.Controls"
xmlns:local="clr-namespace:SilverlightApplication1"
xmlns:GeoPatterns="clr-namespace:GeoPatterns"
Height="700">
<UserControl.Resources>
...
E qui è il mio costruttore in cui è attualmente impostato il DataContext:
namespace SilverlightApplication1
{
public partial class SLHolePattern : UserControl, INotifyPropertyChanged
{
public HolePatternsViewModel HPVM;
public SLHolePattern()
{
InitializeComponent();
this.HPVM=new HolePatternsViewModel();
this.LayoutRoot.DataContext = this.HPVM;
...more code here
}
Funziona tutto bene, ma voglio solo imparare a imposta il DataContext in XAML, non nel codice.
Se istanzio la classe ViewModel in XAML, posso comunque fare riferimento nel costruttore code-behind? Il motivo per cui lo chiedo è che attualmente imposto alcuni valori sul ViewModel nel costruttore prima che il modulo venga mostrato all'utente. – MattSlay
Sì, è possibile. Puoi fare come segue: var aCustomer = this.Resources ["Cust"] come Cliente; aCustomer.Name = "abc"; – Klinger
Ho dimenticato di aggiungere un attributo x: Name. x: la chiave funziona in XAML e x: Name rende l'oggetto visibile al codice. – Klinger