WPF:使用DataGridComboxColumn进行数据绑定时的“无”选项

WPF:使用DataGridComboxColumn进行数据绑定时的“无”选项,wpf,data-binding,binding,wpfdatagrid,datagridcomboboxcolumn,Wpf,Data Binding,Binding,Wpfdatagrid,Datagridcomboboxcolumn,这就是我想要的: 有一个组合框列绑定到ClassA的ApplicationKey属性。 ClassA.ApplicationKey是可为空的 组合框由静态函数all中的ApplicationTokens填充。 ApplicationToken具有ApplicationName和ApplicationKey属性 在下拉列表中选择项目时,ClassA.ApplicationKey属性将设置为所选项目的ApplicationToken.ApplicationKey。 None选项当前由Null表示。这

这就是我想要的:

有一个组合框列绑定到ClassA的ApplicationKey属性。 ClassA.ApplicationKey是可为空的 组合框由静态函数all中的ApplicationTokens填充。 ApplicationToken具有ApplicationName和ApplicationKey属性 在下拉列表中选择项目时,ClassA.ApplicationKey属性将设置为所选项目的ApplicationToken.ApplicationKey。 None选项当前由Null表示。这是可以改变的。 现行代码

<DataGridComboBoxColumn 
    Header="Application" 
    SelectedValueBinding="{Binding ApplicationKey}"
    SelectedValuePath="ApplicationKey" 
    DisplayMemberPath="ApplicationName" 
    ItemsSource="{Binding Source={x:Static app:ApplicationLookup.GetAllOrNone}}"/>
当前绑定工作正常,但我无法从列表中选择“无”项。组合框显示它,但当我尝试用鼠标选择它时,它什么也不做


在绑定组合框中不提供任何内容的标准方式是什么?

我不知道这是否是做事情的标准方式,但似乎有效:

所有ApplicationToken都从令牌继承 令牌具有PrimaryKey属性。 存在这样定义的NullToken类:

公共类空令牌 继承令牌

Private ReadOnly m_DisplayValue As String

Private Sub New(ByVal displayValue As String)
    m_DisplayValue = displayValue
End Sub

Public Overrides Function ToString() As String
    Return m_DisplayValue
End Function

Public Overrides ReadOnly Property PrimaryKey As Integer?
    Get
        Return Nothing
    End Get
End Property

Public Shared ReadOnly BlankToken As New NullToken("")
Public Shared ReadOnly NoneToken As New NullToken("None")
Public Shared ReadOnly AllToken As New NullToken("All")
末级

ApplicationLookup.GetAllorOne返回令牌集合,其中正确的NullToken作为第一项


当我需要一个组合框的“无”或“全选”用户手势时,我所做的是为令牌创建一些静态值,并绑定到一个集合,该集合在第一个位置包含令牌。然后在处理价值变化的过程中对其进行说明:

    public string MidfixText {
        get { return _midfixText; }
        set {
            ...
            _filter(!_midfixText.Equals(Strings.ProjectSelection_MidfixChoice_SelectAll));
        }
    }
嗯,, 贝里尔