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

时间:2010-07-26 18:57:00

标签: wpf data-binding binding wpfdatagrid datagridcomboboxcolumn

这就是我想要的:

  • 有一个组合框列绑定到ClassA的ApplicationKey属性。
  • ClassA.ApplicationKey是Nullable<Int32>
  • 使用静态函数all中的ApplicationTokens填充组合框。
  • ApplicationToken具有ApplicationName和ApplicationKey属性
  • 在下拉列表中选择某个项目时,ClassA.ApplicationKey属性将设置为所选项目上的ApplicationToken.ApplicationKey。
  • “无”选项目前由Null表示。这可以改变。

当前代码

<DataGridComboBoxColumn 
    Header="Application" 
    SelectedValueBinding="{Binding ApplicationKey}"
    SelectedValuePath="ApplicationKey" 
    DisplayMemberPath="ApplicationName" 
    ItemsSource="{Binding Source={x:Static app:ApplicationLookup.GetAllOrNone}}"/>

目前绑定有效,但我无法从列表中选择“无”项目。组合框显示它,但当我尝试用鼠标选择时它没有做任何事情。

在绑定的组合框中提供none的标准方法是什么?

2 个答案:

答案 0 :(得分:0)

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

  • 所有ApplicationTokens都继承自Token
  • 令牌具有“PrimaryKey”属性。
  • 有一个NullToken类定义如下:

    Public Class 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.GetAllOrNone返回令牌集合,其中包含正确的NullToken作为第一项。

答案 1 :(得分:0)

当我为comboBox需要None或(Select All)类型的用户手势时,我所做的是为令牌创建一些静态值,并绑定到包含第一个位置的令牌的集合。然后在处理价值变化的任何事情中考虑它:

    public string MidfixText {
        get { return _midfixText; }
        set {
            ...
            _filter(!_midfixText.Equals(Strings.ProjectSelection_MidfixChoice_SelectAll));
        }
    }

HTH,
Berryl