将WPf Datagrid组合框值设置为其各自的文本框

时间:2010-01-05 13:59:57

标签: wpf datagrid combobox textbox selecteditem

我有一个文本框和一个组合框作为模板列。以下是XAML

<wpfkit:DataGrid Margin="3" Style="{DynamicResource SimpleDataGrid}" 
 FontWeight="Normal" MaxHeight="100" CanUserAddRows="True" 
 ItemsSource="{Binding Source={StaticResource odpExistingGHSCodesColl}}" 
 AutoGenerateColumns="False" Name="dgGHS" VerticalScrollBarVisibility="Visible"
 <wpfkit:DataGrid.Columns>
       <wpfkit:DataGridTemplateColumn IsReadOnly="True">
         <wpfkit:DataGridTemplateColumn.CellTemplate>
           <DataTemplate>
             <Image Style="{DynamicResource SimpleImageDelete}"/>
           </DataTemplate>
          </wpfkit:DataGridTemplateColumn.CellTemplate>
        </wpfkit:DataGridTemplateColumn>
        <wpfkit:DataGridTemplateColumn IsReadOnly="True">
          <wpfkit:DataGridTemplateColumn.CellTemplate>
           <DataTemplate>
             <ComboBox  x:Name="cbTGHSCodes" 
      ItemsSource="{Binding Source={StaticResource   odpGHSCodesColl}}" 
      DisplayMemberPath="fldCode" SelectedItem="{Binding Path=fldGHSCodeList}"
      SelectedValue="fldCode" SelectedValuePath="fldDescription"> 
            </ComboBox>
           </DataTemplate>
         </wpfkit:DataGridTemplateColumn.CellTemplate> </wpfkit:DataGridTemplateColumn> <wpfkit:DataGridTemplateColumn IsReadOnly="True"> <wpfkit:DataGridTemplateColumn.CellTemplate>
       <DataTemplate> 
           <TextBox x:Name="tbTGHSCodeDescription" Text="{Binding Path=fldDescription, ElementName=cbTGHSCodes}"> </TextBox></DataTemplate>
   </wpfkit:DataGridTemplateColumn.CellTemplate>
  </wpfkit:DataGridTemplateColumn>
 </wpfkit:DataGrid.Columns>
</wpfkit:DataGrid>

我有一个可观察的集合(odpGHSCodesColl),我在其中插入代码及其各自的描述。存储的代码是fldCodes属性,而fldDescription有描述。所以我想要实现的是,如果Code P1有Desc ABC,P2有DFG,P4有UHY,那么如果从combobox中选择P1那么下一列中相应的文本框将填充ABC,如果P2则是DFG等等。 我希望你能够明白。我无法找到任何附加事件。如果可能的话,在XAML中给我一些例子,这样我就可以编写较少的代码。

1 个答案:

答案 0 :(得分:0)

您将无法使用上面列出的名称绑定方法,无法正确解析单元格模板绑定。在输出窗口中,您应该看到与绑定相关的错误列表。 即使你可以做这个绑定,你也会有多个具有相同x的ComboBox:名称=“cbTGHSCodes”(列中每个单元格一个)(即使你可以在像你这样的数据模板中执行此操作,也会绑定哪一个)正在尝试?)

您需要使用组合框绑定在底层对象上设置代码属性。设置代码时,底层对象应设置描述,然后底层对象应调用INotifyPropertyChanged,这反过来将更新UI。

基本上,您的数据网格将有两列。每列都有一个Cell模板,该模板绑定到行中显示的项目的属性。当代码更改时,行中的项目将找到新描述并设置其描述属性,然后设置NotifyPropertyChanged,它将提醒用户界面。