2015-06-13 2 views
0

После неудачной привязки моей коллекции Observable к моему datagrid (Another question in this same forum), я попытался уменьшить область действия. Теперь у моего проекта есть только один datagrid, один ObservableColection и один класс. Но все-таки мой привязки данных не удается .. пожалуйста, помогите ..Databinding a Datagrid

using System.Collections.ObjectModel; 
using System.Windows; 

namespace TestDatagrid 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
    } 

    public class MainViewModel 
    { 
     public ObservableCollection<OptionStrike> oOs = new ObservableCollection<OptionStrike>(new OptionStrike[] 
      { 
       new OptionStrike("Put", 7500.00, 12345), 
       new OptionStrike("Call", 7500.00, 123), 
       new OptionStrike("Put", 8000.00, 23645), 
       new OptionStrike("Call", 8000.00,99999) 
      }); 
    } 

    public class OptionStrike 
    { 
     public OptionStrike(string p1, double p2, int p3) 
     { 
      // TODO: Complete member initialization 
      this.Type = p1; 
      this.Strike = p2; 
      this.Volume = p3; 
     } 

     public string Type { get; set; } 
     public double Strike { get; set; } 
     public double Volume { get; set; } 
    } 
} 

это мой XAML ..

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:TestDatagrid" x:Class="TestDatagrid.MainWindow" Title="MainWindow" Height="350" Width="525"> 
 
    <Window.DataContext> 
 
    <local:MainViewModel/> 
 
    </Window.DataContext> 
 
    <Grid> 
 
    <StackPanel> 
 
     <DataGrid ItemsSource="{Binding oOs}" AutoGenerateColumns="True" /> 
 
    </StackPanel> 
 
    </Grid> 
 
</Window>

ответ

0

Вы должны подвергать ваши ObservableCollection как собственности , а не Поле.

public class MainViewModel 
{ 
    public ObservableCollection<OptionStrike> oOs { get; set; } 

    public MainViewModel() 
    { 
     oOs = new ObservableCollection<OptionStrike>(new OptionStrike[] 
     { 
      new OptionStrike("Put", 7500.00, 12345), 
      new OptionStrike("Call", 7500.00, 123), 
      new OptionStrike("Put", 8000.00, 23645), 
      new OptionStrike("Call", 8000.00,99999) 
     }); 
    } 
} 

Вы не можете связать с полями, см here для более определенной информации по этому вопросу.

Смежные вопросы