2011-10-16 15 views
0

約4時間ぐらい見渡していますので、答えがどこかに残っていればごめんなさい。 とにかくここに行く:WPF DataGridComboBoxColumnバインドの問題C#4

私はDataGridを持っており、DatGridComboBoxColumnを実装しようとしています。 私はそれが正しいデータを思いつくまで管理しています。ただし、選択すると、選択した列だけでなく、マスター表の別の列も変更されます。具体的に

私のグループの表では、次のようになります。
ID、名前
1、
2、B
3、C

私はDataGridComboBoxColumnでAを選択した場合、それは変更さGroupIdフィールドのスケジュールデータソースの値が1になります。 ただし、の名前がに変更されています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

関連する問題