1

这就是我要的:

  • 有一个组合框列绑定到 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}}"/>

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

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

4

2 回答 2

0

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

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

HTH,
绿柱石

于 2010-07-26T19:57:52.067 回答
0

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

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

    公共类 NullToken 继承 Token

    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返回一个 Token 集合,其中第一项是正确的 NullToken。

于 2010-07-26T19:44:26.413 回答