【发布时间】:2014-01-04 03:32:45
【问题描述】:
我是 WPF 新手,我尝试让 DataGrid 的 DataGridComboBoxColumn 正确设置绑定。
我有一个组合框列的可能元素的字典,键是项目属性应具有的 Id,值是要在组合框中显示的文本。字典看起来像这样:
public static Dictionary<int, string> users;
以及填充 DataGrid 的项目列表,每个项目都有一个组合框的 Id 值:
public static List<FileItem> fileItems = new List<FileItem>();
//...
public class FileItem {
public int OwnerId { get; set; }
//...
}
XAML 现在看起来像这样:
<DataGrid x:Name="DataGridUpdates" Margin="12,74,10,313" AutoGenerateColumns="False" DataContext="{Binding FileItems}">
<DataGrid.Columns>
<DataGridComboBoxColumn x:Name="ClmOwner" Header="Owner" ClipboardContentBinding="{x:Null}" SelectedValueBinding="{x:Null}" SelectedItemBinding="{x:Null}" TextBinding="{x:Null}"/>
</DataGrid.Columns>
</DataGrid>
我试过了:
SelectedValueBinding="{Binding Path=OwnerId}" SelectedValuePath="OwnerId"
但没有用,行显示为空的 ComboBox,因为它没有 ItemsSource,因为我不知道在哪里设置它。
在代码隐藏中,我可以像这样设置 ItemsSource 以至少设置值列表:
ClmOwner.ItemsSource = FileItem.users;
但我更喜欢使用 XAML。
问题是如何设置 ComboBox 的 XAML 绑定以获取用户字典的值,并将值选择为 OwnerId 属性的值。
PS:我不确定 DataContext 是否应该像现在的值“{Binding FileItems}”。
【问题讨论】:
标签: c# wpf xaml datagrid combobox