WPF dataGridComboBox在运行时不显示值

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

嘿,我是WPF的新成员,所以开始吧

我想在我的数据网格中使用一个组合框。我使用的是材料设计xaml数据网格

我的XAML:

<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>