DataGridComboboxColumn与ObservableCollection绑定

时间:2013-02-03 23:23:50

标签: c# wpf xaml observablecollection datagridcomboboxcolumn

我的小项目现在看起来很不一样了。现在我有ObservableCollection OC1包含我要与整个DatagridTextBoxColumns(通过绑定路径)和ObservableCollection OC2绑定的数据,其中我存储了DatagridComboboxColumn的个案(作为ItemsSourceBinding)。 SelectedItem中的DatagridComboboxColumn属性是OC1中的一个值(并且它是OC2个案例中的一个)。 DatagridTextBoxColumns上的绑定没问题。

XAML:

<DataGrid x:Name="DGoc1" x:Uid="DGoc1" AutoGenerateColumns="False"
          AlternationCount="2" SelectionMode="Single" Margin="0,5,0,0" 
          HorizontalAlignment="Stretch">
  <DataGrid.Columns>

    <!-- This works fine -->
    <DataGridTextColumn Binding="{Binding Path=id}" Header="ID" 
                        Width="Auto" IsReadOnly="True"/>

    <!-- Dow to bind this properly?? -->
    <DataGridComboBoxColumn ItemsSource="{Binding OC2}" 
                            SelectedItemBinding="{Binding Path=valueFromOc1}"
                            Header="OC2Cases" Width="Auto"/>

C#(的更新):

public class ClasswithSomeData
{
    public int id { get; set; }
    public string valueFromOc1 { get; set; }
}
public partial class DGCBC : Window
{
    public ObservableCollection<string> OC2 { get; set; }
    public ObservableCollection<ClasswithSomeData> OC1 { get; set;}

    private void tabPanel1_Loaded(object sender, RoutedEventArgs e)
    {
        LoadDG();
    }

public void LoadDG()
    {
    OC2 = new ObservableCollection<string>(someCases);

    OC1 = new ObservableCollection<ClasswithSomeData> { };
    OC1.Add(someData1);
    OC1.Add(someData2);
    OC1.Add(someData3);
    DGoc1.ItemsSource = OC1;

如何正确绑定此DatagridComboboxColumn?请帮助一些例子。

1 个答案:

答案 0 :(得分:1)

您的observablecollections被声明为字段:

public ObservableCollection<string> OC2;
public ObservableCollection<ClasswithSomeData> OC1;

它们应该是属性:

public ObservableCollection<string> OC2 {get;set;}
public ObservableCollection<ClasswithSomeData> {get;set;} 

不要忘记INotifyPropertyChanged! =)