2011-10-16 2 views
0

약 4 시간 동안 둘러 보았으므로 여기에 답변이있는 경우 미안합니다. 어쨌든 .. 여기갑니다 :문제 바인딩 WPF DataGridComboBoxColumn C# 4

DataGrid가 있고 DatGridComboBoxColumn을 구현하려고합니다. 올바른 데이터를 얻으려는 데까지 관리하고 있습니다. 그러나, 내가 선택한 경우뿐만 아니라 선택한 열뿐만 아니라 마스터 테이블의 다른 열을 변경합니다. 나는 A가 DataGridComboBoxColumn에서이 변경을 선택하면,
ID, 이름
1 A
2, B
3, C

을 :

은 특히 :

내 그룹 테이블은 다음과 같다 GroupId 일정 데이터 소스의 값이 1 인 경우 - 이름이 인 Sch DataSource를 "A"로 edules하십시오. 나는 물건을 설정하는 방법에 대해 약 70 가지의 다른 조합을 시도했다. Schedule에서 Name 필드의 이름을 ScheduleName과 같은 다른 이름으로 바꾸는 데 효과가있는 유일한 방법입니다. WPF에서 어떤 종류의 버그입니까? 아니면 올바르게 코딩하지 않았습니까?

도움이 될 것입니다.

<Page x:Class="Bix.SchedulesMainPage" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="565" d:DesignWidth="775" 
    Title="SchedulesMainPage" xmlns:my="clr-namespace:Bix"> 
    <Page.Resources> 
     <ObjectDataProvider x:Key="ScheduleDataProvider" ObjectType="{x:Type my:ScheduleDataProvider}"/> 
     <ObjectDataProvider x:Key="Schedules" 
      ObjectInstance="{StaticResource ScheduleDataProvider}" 
      MethodName="GetSchedules"/> 
     <ObjectDataProvider x:Key="GroupDataProvider" ObjectType="{x:Type my:GroupDataProvider}"/> 
     <ObjectDataProvider x:Key="Groups" 
      ObjectInstance="{StaticResource GroupDataProvider}" 
      MethodName="GetGroups"/> 
     <ObjectDataProvider x:Key="ReportDataProvider" ObjectType="{x:Type my:ReportDataProvider}"/> 
     <ObjectDataProvider x:Key="Reports" 
      ObjectInstance="{StaticResource ReportDataProvider}" 
      MethodName="GetReports"/> 
    </Page.Resources> 
    <Grid> 
     <Label Content="Schedules" FontSize="32" FontWeight="Bold" Foreground="#FF5A5A5A" Height="52" HorizontalAlignment="Left" Margin="10,10,0,0" Name="label1" VerticalAlignment="Top" Width="719" /> 
     <DataGrid AutoGenerateColumns="False" DataContext="{Binding Source={StaticResource Schedules}}" Height="224" HorizontalAlignment="Left" HorizontalGridLinesBrush="#FFCBCBCB" ItemsSource="{Binding}" Margin="12,68,0,0" Name="dgrdContacts" VerticalAlignment="Top" VerticalGridLinesBrush="#FFCBCBCB" Width="751"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Binding="{Binding Path=Name}" Header="Name" Width="120" /> 
       <DataGridComboBoxColumn Header="Contact Group" 
        SelectedValueBinding="{Binding Path=GroupId}" DisplayMemberPath="Name" SelectedValuePath="Id" ItemsSource="{Binding Source={StaticResource Groups}}"> 
        <DataGridComboBoxColumn.ElementStyle> 
         <Style TargetType="ComboBox"> 
          <Setter Property="ItemsSource" Value="{Binding Source={StaticResource Groups}}" /> 
          <Setter Property="Text" Value="{Binding Name}" /> 
         </Style> 
        </DataGridComboBoxColumn.ElementStyle> 
        <DataGridComboBoxColumn.EditingElementStyle> 
         <Style TargetType="ComboBox"> 
          <Setter Property="ItemsSource" Value="{Binding Source={StaticResource Groups}}" /> 
          <Setter Property="Text" Value="{Binding Name}" /> 
         </Style> 
        </DataGridComboBoxColumn.EditingElementStyle> 
       </DataGridComboBoxColumn> 
       <DataGridTextColumn Binding="{Binding Path=Interval}" Header="Send Every" Width="120" /> 
       <DataGridTextColumn Binding="{Binding Path=IntervalUnit}" Header="Time Unit" Width="120" /> 
       <DataGridTextColumn Binding="{Binding Path=LastSend}" Header="Last Sent" Width="*" /> 
      </DataGrid.Columns> 
     </DataGrid> 
    </Grid> 
</Page> 

답변

0

당신은 데이터 소스의 기본 행에 Name 속성에 ComboBoxText 속성을 결합하고 있습니다 :
올슨

다음 페이지 코드입니다. 코드를 살펴보면 관련 외부 속성을 이미 설정 했으므로 EditingElementStyleElementStyle 스타일이 필요하지 않습니다.

+0

감사합니다. 좋은 방향! 올바른 속성 이름은 DisplayMemberPath 및 SelectedValuePath입니다. 이제 작동합니다! – Orson