2012-09-14 5 views

Respuesta

12

Eso simplemente establece la propiedad DataContext igual al objeto con la propiedad. El código equivalente sería this.DataContext = this;

Editar

La propiedad DataContext es el objeto que se utiliza como contexto para todos los enlaces que se producen en este objeto y sus objetos secundarios. Si no tiene un DataContext configurado correctamente en el modelo al que desea vincularse, fallarán todos sus enlaces.

Edit2

Aquí es cómo configurarlo en el código subyacente (que corresponden a su ejemplo):

public partial class ListViewTest : Window 
{ 
    ObservableCollection<GameData> _GameCollection = 
     new ObservableCollection<GameData>(); 

    public ListViewTest() 
    { 
     _GameCollection.Add(new GameData { 
      GameName = "World Of Warcraft", 
      Creator = "Blizzard", 
      Publisher = "Blizzard" }); 
     _GameCollection.Add(new GameData { 
      GameName = "Halo", 
      Creator = "Bungie", 
      Publisher = "Microsoft" }); 
     _GameCollection.Add(new GameData { 
      GameName = "Gears Of War", 
      Creator = "Epic", 
      Publisher = "Microsoft" }); 

     InitializeComponent(); 

     this.DataContext = this; //important part 
    } 

    public ObservableCollection<GameData> GameCollection 
    { get { return _GameCollection; } } 

    private void AddRow_Click(object sender, RoutedEventArgs e) 
    { 
     _GameCollection.Add(new GameData { 
      GameName = "A New Game", 
      Creator = "A New Creator", 
      Publisher = "A New Publisher" }); 
    } 
} 
+0

Ok, pero ¿por qué? ¿Y por qué si elimino esta línea no puedo agregar ningún objeto nuevo a mi ListView? – gliderkite

+0

@gliderkite Si está haciendo el ejemplo que ha vinculado, supongo que los objetos se están agregando correctamente a su 'ObservableCollection', pero el enlace está fallando. –

+0

Sí, quiero saber por qué en el ejemplo establece el DataContext de esa manera, y si hay una forma de no usar la línea XAML. – gliderkite

2

Significa "El DataContext es el propietario de esta propiedad DataContext" por lo tanto el control.

En C# sería

myTextBox.DataContext = myTextBox; 
0

Para responder a la segunda pregunta: En algún momento puede ser útil para declarar DataContext en XAML porque se puede ver el enlace de datos en tiempo de diseño. Si lo declaras por código, el enlace de datos se realizará solo en tiempo de ejecución.

Existen otras formas de obtener datos de tiempo de diseño (falso). Para obtener más información, consulte sobre "flexibilidad".

Nota: Como regla general, por favor recuerde que si usted tiene otra pregunta, usted debe crear una nueva solicitud stackoverflow :-)

Cuestiones relacionadas