2010-09-02 3 views
0

У меня есть короткий вопрос:Связывание с Relativesource --wpf

У меня есть datagrid и привязал его к чему-то. Тогда я положил выпадающий в колонке и переплетен его к другому источнику с помощью

ItemsSource="{Binding DataContext.Users, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" 

Теперь я хочу, чтобы снова использовать источник DataGrid, в самом комбобоксе again.That кода не работает, и теперь я знаю, что есть Идентификатор в источнике datagrid.

SelectedValue="{Binding ID}" 

Как это исправить? Заранее спасибо.

И вот мой весь DataGrid, а проблемная часть - это combobox.

<DataGrid ItemsSource="{Binding SCs}" SelectedItem="{Binding SelectedSC}" Margin="0,10,0,0" 
      RowStyle="{StaticResource ResourceKey=DataGridRowStyle}" Style="{DynamicResource ResourceKey=UILDataGridStyle}" AutoGenerateColumns="False" EnableRowVirtualization="True" 
      RowDetailsVisibilityMode="VisibleWhenSelected" Width="Auto" IsReadOnly="True" Background="Transparent" 
      VerticalAlignment="Stretch" HorizontalAlignment="Stretch" GridLinesVisibility="Vertical" VerticalGridLinesBrush="{DynamicResource ResourceKey=UILBorderBrush}" 
      RowHeaderWidth="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" BorderBrush="{DynamicResource ResourceKey=UILBorderBrush}" 
      BorderThickness="1" SelectionUnit="FullRow" SelectionMode="Single" x:Name="SCDataGrid"> 
     <DataGrid.Columns> 
      <DataGridTextColumn x:Name="securityConfigurationIDColumn" Binding="{Binding Path=SecurityConfigurationID}" Header="Security Configuration ID" Width="*" /> 
      <DataGridTextColumn x:Name="securityConfigurationNameColumn" Binding="{Binding Path=SecurityConfigurationName}" Header="Security Configuration Name" Width="*" /> 
      <DataGridTemplateColumn x:Name="proxyResponsibleUser_IDColumn" Header="Proxy Responsible User ID" Width="*" > 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <ComboBox IsEnabled="True" ItemsSource="{Binding DataContext.Users, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" 
            SelectedValuePath="{Binding UserID}" DisplayMemberPath="{Binding FullName}" Width="117" Height="20" 
            SelectedValue="{Binding ProxyResponsibleUser_ID, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" /> 

        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 

      <DataGridTextColumn x:Name="responsibleUser_IDColumn" Binding="{Binding Path=User.FullName}" Header="Responsible User ID" Width="*" /> 
      <DataGridTextColumn x:Name="securityConfigurationDescriptionColumn" Binding="{Binding Path=SecurityConfigurationDescription}" Header="Security Configuration Description" Width="*" /> 
      <DataGridTextColumn x:Name="securityConfigurationURLColumn" Binding="{Binding Path=SecurityConfigurationURL}" Header="Security Configuration URL" Width="*" /> 
     </DataGrid.Columns> 
    </DataGrid> 
+0

Вы можете разместить код XAML вашего DataGrid, чтобы мы могли иметь лучшее представление о том, что вы пытаетесь сделать? – ASanch

+0

Я отправил datagrid. Я с нетерпением жду вашего решения =) – cemregoksu

ответ

1

Использование шаблона сотовой ячейки для сотового блока.

Этот код связывает всю сетку источника данных для шаблона комбинированного окна, которые позволяют использовать любое имущество, не делая жонглирование отыскания предков ..

<DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Grid DataContext="{Binding }"> 
         <ComboBox IsEnabled="True" 
           ItemsSource="{Binding Users}"     
           SelectedValuePath="{Binding UserID}" 
           DisplayMemberPath="{Binding FullName}" 
           Width="117" Height="20" 
           SelectedValue="{Binding ProxyResponsibleUser_ID, 
          UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/> 
        </Grid> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
+0

Я не использовал другую сетку, но мне также не нужно было найти какого-либо предка, я просто привязал выбраннуюValue к ProxyResponsibleUser_ID, и она сработала. Спасибо за помощь. – cemregoksu

+0

Хорошо .. это хорошо .. Вышеуказанный подход также ответил бы на вашу проблему. – RockWorld

Смежные вопросы