WPF dataGridComboBox在运行时不显示值
嘿,我是WPF的新成员,所以开始吧 我想在我的数据网格中使用一个组合框。我使用的是材料设计xaml数据网格 我的XAML:WPF dataGridComboBox在运行时不显示值,wpf,vb.net,xaml,datagrid,material-design-in-xaml,Wpf,Vb.net,Xaml,Datagrid,Material Design In Xaml,嘿,我是WPF的新成员,所以开始吧 我想在我的数据网格中使用一个组合框。我使用的是材料设计xaml数据网格 我的XAML: <DataGrid x:Name="dgData" Margin="0 8 0 0" CanUserSortColumns="False" CanUserAddRows="False" AutoGenerateColumns="False" materialDe
<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 Class TicketInfo
Public Property Subject() As String
Get
Return m_Subject
End Get
Set
m_Subject = Value
End Set
End Property
Private m_Subject As String
Public Property RaisedBy() As String
Get
Return m_RaisedBy
End Get
Set
m_RaisedBy = Value
End Set
End Property
Private m_RaisedBy As String
Public Property Status() As ObservableCollection(Of String)
Get
Return m_Status
End Get
Set
m_Status = Value
End Set
End Property
Private m_Status As ObservableCollection(Of String)
End Class
现在,当我运行此程序时,它看起来如下所示:
那么,我在这里遗漏了什么呢?您必须使用
observedcollection
而不是List
您必须在模型类上实现接口INotifyPropertyChanged
更新
如果您不想在初始化后更改ticketsList
,则不必实现INotifyPropertyChanged
,但无论如何,您必须将列表更改为observedcollection
。
您只需在InitializeComponent()
之前创建并添加票证列表
,DataGridColumn
不是可视元素,也不会继承DataContext
。我不知道MaterialDataGridComboBoxColumn
,但是使用内置的DataGridComboxColumn
类,您可以定义一个ElementStyle
和一个EditingElementStyle
来设置生成的ComboBox的ItemsSource
属性:
<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>
他没有使用DataContext
但是Datagrid
ItemsSource
您是否设置了DisplayMemberPath和SelectedValuePath?我将Dim ticketsList更改为New ObservableCollection(Of TicketInfo)(),但我在下拉列表中仍然没有得到任何内容。好的,但您是否在InitializeComponent()之前初始化并添加了它
?对其进行尺寸标注,设置属性,初始化组件,然后将其添加到itemssource。仍然没有数据。您必须最后执行初始化组件
,而不是在
<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>