2013-11-20 17 views
0

我是WPF的新手,并对我在数据网格上使用组合框时遇到的问题有疑问。当从组合中选择一个项目时,绑定属性不会像我期望的那样更新。WPF datagrid - 选择组合项后更新属性

由于我无法发布图片(这是我第一次发布到SO),我会尝试解释。如果从组合列表中选择“D00120”,组合将反映更改,但网格属性不会更改。

的XAML:

<DataGridTemplateColumn Header="CPT Code" Width="75"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <ComboBox ItemsSource="{Binding PartBCombo, 
            RelativeSource={RelativeSource AncestorType=Window}}" 
            DisplayMemberPath="PartBLookup_CPTCode" 
            SelectedValuePath="PartBLookup_ProcedureDescription" 
            SelectedValue="{Binding PartBBilling_ProcedureName, UpdateSourceTrigger=PropertyChanged}" /> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 

物业组合项目:

Partial Public Class PartBBilling_Combobox 

    Private _PartBLookup_CPTCode As String 
    Public Property PartBLookup_CPTCode As String 
     Get 
      Return _PartBLookup_CPTCode 
     End Get 
     Set(value As String) 
      _PartBLookup_CPTCode = value 
     End Set 
    End Property 

    Private _PartBLookup_ProcedureDescription As String 
    Public Property PartBLookup_ProcedureDescription As String 
     Get 
      Return _PartBLookup_ProcedureDescription 
     End Get 
     Set(value As String) 
      _PartBLookup_ProcedureDescription = value 
     End Set 
    End Property 

End Class 

物业数据网格:

Private _PartBBilling_CPT As String 
    Public Property PartBBilling_CPT As String 
     Get 
      Return _PartBBilling_CPT 
     End Get 
     Set(value As String) 
      _PartBBilling_CPT = value 
      RaisePropertyChanged("PartBBilling_CPT") 
     End Set 
    End Property 

    Private _PartBBilling_ProcedureName As String 
    Public Property PartBBilling_ProcedureName As String 
     Get 
      Return _PartBBilling_ProcedureName 
     End Get 
     Set(value As String) 
      If _PartBBilling_ProcedureName <> value Then 
       _PartBBilling_ProcedureName = value 
       RaisePropertyChanged("PartBBilling_ProcedureName") 
      End If 
     End Set 
    End Property 

当选择了一个项目,正确的UI显示但网格属性不会更新。除此之外,组合框的功能还不错。

感谢您的任何帮助或建议。

回答

0

我首先想用独特的东西你SelectedValuePath(用于识别正确的选择)

DisplayMemberPath="PartBLookup_CPTCode" 
SelectedValuePath="PartBLookup_CPTCode" 

另外要小心和注意,您的SelectedValue将被绑定到的值之一的PartBCombo内部集合无论这种类型是什么。因此,将SelectedValue绑定到的属性应该是该类型的。

+0

感谢您的回复。如果我将它们反转,那么程序名称会显示在组合中,而不是CPT代码(只是在我缺少某些东西的情况下尝试过)。我希望显示CPTcode,并立即在组合框右侧的文本框中显示过程名称。我无法发布图片,因为我是新手,所以这是我可以解释的最好方式。从组合中选择一个项目时,必须更新组合的属性。但我不知道该怎么做。 – user3014908

+0

为了使选择正常工作,您需要指定一些与CTPCode类似的独特选项作为您的SelectedValuePath – atomaras

+0

如果我这样做,那么我将失去在相邻文本框中显示过程名称的功能。我希望我可以发布图片来更好地解释这种情况,但我需要至少10的声望才能发布图片。组合功能按需要工作。它只是让datagrid类中的属性正确更新。否则,组合中的原始选定项目被写回数据库而不是新选择的项目。 – user3014908