我下面有一个对象。我有一个名为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就好了。我究竟做错了什么?
答案 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>