如何在wpf datagridview中将对象的列表属性绑定到ComboBoxColumn?

时间:2015-07-28 19:53:16

标签: c# wpf xaml datagridview combobox

我下面有一个对象。我有一个名为sourceListofData的列表。

public class StringWrapper
    {
        public string Value { get; set; }
        public int ID { get; set; }
        public string Name { get; set; }
        public List<string> options{ get; set; }

        public StringWrapper(string val)
        {
            this.Value = val;
            this.Name = val;
            options = new List<string>();
            options.Add("test1");
            options.Add("test2");


        }
    }

我的目标是拥有1个文本列和1个组合框列。文本列显示“值”,组合框列将具有组合框,可以将其源与“属性”链接。

以下是我在xaml中的文本框:

   <DataGrid
        AutoGenerateColumns="False" ColumnWidth="*"
        CanUserReorderColumns="False" 
        HorizontalAlignment="Left"
        Margin="12,161,0,116"
        Name="dgEditConfig" Width="685"
        ItemsSource="{Binding sourceListOfData}"
        AlternatingRowBackground="#CFFA893D" IsReadOnly="True" HeadersVisibility="Column">

        <DataGrid.Columns>
            <DataGridTextColumn Header="Table Columns" Binding="{Binding Value}"/>

我的想法是,我应该只指向StringWrapper的属性,它应该能够确定如下的组合框项目:

            <DataGridComboBoxColumn ItemsSource="{Binding sourceListOfData}"
                                DisplayMemberPath="Name"
                                SelectedValuePath="ID"
                                SelectedValueBinding="{Binding options }" />

但无论我做出什么样的路径变化,我甚至都看不到在数据网格视图上出现的组合框。我看到textboxcolumn就好了。我究竟做错了什么?

1 个答案:

答案 0 :(得分:0)

列的DataContext将是DataGrid的ItemsSource中的单个项目。我猜你会有一个你想要用作ComboBox的ItemsSource的对象列表,所以你需要使用RelativeSource Binding来获得一个Element的DataContext更高的可视树。 / p>

 <div class="center-block" style="width: 75%; margin-top: -50px;" >
        <div class="chart-edge">
            <div id="line-chart" class="flot-chart"></div>
        </div>
</div>