Установка значения комбинированного списка WPf Datagrid для соответствующего текстового поля - PullRequest
1 голос
/ 05 января 2010

У меня есть текстовое поле и поле со списком в качестве столбца шаблона. Ниже 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, чтобы мне нужно было писать меньший код.

1 Ответ

0 голосов
/ 07 января 2010

вы не сможете использовать метод привязки имени, который вы описали выше, привязка шаблона ячейки не может быть решена правильно. В вашем окне вывода вы должны увидеть список ошибок, связанных с привязкой. даже если бы вы могли сделать это связывание, у вас было бы несколько ComboBox с одинаковым x: Name = "cbTGHSCodes" (по одному для каждой ячейки в столбце) (к которому вы бы привязались, даже если бы вы могли сделать это в таком шаблоне данных, как вы пытаетесь?)

Вам нужно установить свойство кода для вашего базового объекта, используя привязку поля со списком. Когда вы устанавливаете код, ваш базовый объект должен задать описание, а затем ваш базовый объект должен вызвать INotifyPropertyChanged, это, в свою очередь, обновит пользовательский интерфейс.

В основном ваша сетка данных будет иметь два столбца. Каждый столбец будет иметь шаблон ячейки, который привязывается к свойству элемента, отображаемого в строке. Когда код изменяет элемент в строке, он находит новое описание и устанавливает его свойство description, а затем NotifyPropertyChanged, который будет оповещать пользовательский интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...