1

我有一个文本框和一个组合框作为模板列。下面是 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 具有描述。所以我想要实现的是,如果代码 P1 有 Desc ABC , P2 有 DFG , P4 有 UHY ,那么如果从组合框中选择 P1 则下一列中的相应文本框将填充 ABC ,如果 P2 则 DFG 等等. 我希望你能够明白。我找不到任何附加的事件。如果可能的话,给我一些 XAML 本身的例子,这样我就需要编写更少的代码。

4

1 回答 1

0

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

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

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

于 2010-01-07T06:16:12.240 回答