嘿,我是WPF的新手,所以这里就是。
我想在我的数据网格中使用组合框。我正在使用材料设计xaml datagrid。
我的XAML:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
?><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Welcome to CodeIgniter</title>
<?php echo $map['js'];?>
</head>
<body>
<div id="container">
Welcome to GoogleMAp
<?php echo $map['html'];?>
</div>
</body>
</html>
代码背后:
<DataGrid x:Name="dgData"
Margin="0 8 0 0"
CanUserSortColumns="False"
CanUserAddRows="False"
AutoGenerateColumns="False"
materialDesign:DataGridAssist.CellPadding="13 8 8 8"
materialDesign:DataGridAssist.ColumnHeaderPadding="8">
<DataGrid.Columns>
<materialDesign:MaterialDataGridComboBoxColumn
ItemsSource="{Binding Status}"
Header="Status" Width="Auto" />
</DataGrid.Columns>
</DataGrid>
上课:
Public Sub New()
InitializeComponent()
Dim ticketsList As New List(Of TicketInfo)()
ticketsList.Add(New TicketInfo() With {
.Subject = "IE Not Working",
.RaisedBy = "User 1",
.Status = New ObservableCollection(Of String)() From {"Frederick", "Baltimore", "Rockville"}
})
dgData.ItemsSource = ticketsList
[more code follows....]
}
现在,当我运行它时,它看起来像这样:
那么,我在这里错过了什么?
答案 0 :(得分:0)
您必须使用ObservableCollection
而不是列表
您必须在模型类doc & example about INotifyPropertyChanged
上实现接口INotifyPropertyChanged
<强>更新强>
如果您在初始化INotifyPropertyChanged
之后永远不想更改,则无需实施ticketsList
,但无论如何都必须将List
更改为ObservableCollection
。
您只需在ticketsList
InitializeComponent()
即可
答案 1 :(得分:0)
DataGridColumn
不是视觉元素,不会继承DataContext
。我不知道MaterialDataGridComboBoxColumn
,但使用内置的DataGridComboBoxColumn
类,您可以定义ElementStyle
和EditingElementStyle
来设置ItemsSource
属性生成的ComboBox:
<DataGrid x:Name="dgData"
Margin="0 8 0 0"
CanUserSortColumns="False"
CanUserAddRows="False"
AutoGenerateColumns="False"
materialDesign:DataGridAssist.CellPadding="13 8 8 8"
materialDesign:DataGridAssist.ColumnHeaderPadding="8">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Status" Width="Auto">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Status}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Status}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>