2013-07-18 2 views
2

하나의 열이있는 DataGrid에 콤보 박스가 표시됩니다. 현재 새 행은 예상대로 기존 행 아래에 표시됩니다.DataGrid가 하나의 새로운 행을 표시하지만 이후의 데이터는 표시하지 않습니다.

public class tbl_SecurityUserRoleGroup_Row 
{ 
    public int UserID { get; set; } 
    public int RoleGroupID { get; set; } 
} 

그리고 ListSecurityRoleGroup이 목록은 다음과 같습니다 : 내가있어 뒤에 코드에서

public class tbl_Security_RoleGroup_Row 
{ 
    public int ID { get; set; } 
    public string PublicID { get; set; } 
    public string Description { get; set; } 
} 

:

dgRoleGroups.DataContext = ListSecurityUserRoleGroup; 
dgRoleGroups.ItemsSource = ListSecurityUserRoleGroup; 
을 ListSecurityUserRoleGroup가의 ObservableCollection에이

<grid> 
<DockPanel Grid.Column="0" Grid.Row="0"> 
     <TextBlock DockPanel.Dock="Top" Text="Role Groups"/> 
     <DataGrid DockPanel.Dock="Bottom" Name="dgRoleGroups" AutoGenerateColumns="False" CanUserAddRows="True" CanUserDeleteRows="True" HorizontalAlignment="Left" ItemsSource="{Binding ListSecurityUserRoleGroup}"> 
      <DataGrid.Columns> 
       <DataGridTemplateColumn Header="Role Group" Width="*"> 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <ComboBox ItemsSource="{Binding ListSecurityRoleGroup, 
           RelativeSource={RelativeSource AncestorType=UserControl}}" 
             DisplayMemberPath="Description" SelectedValuePath="ID" 
             SelectedValue="{Binding RoleGroupID}”/> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
       </DataGridTemplateColumn> 

      </DataGrid.Columns> 
     </DataGrid> 
    </DockPanel> 
</Grid> 

아래의 그림은 첫 번째 행에 대한 바인딩이 작동하고 있음을 보여줍니다. 새로운 행이 생겨서 그 값을 선택할 수 있습니다.

enter image description here

그러나, 나는 다음 다른 새 행을 얻을 수 없습니다. 이것이 내가 풀려고하는 문제이다.

다른 게시물을 읽기 때문에 IEditableObject, INotifiyProperyChanged의 영역에 뭔가가 빠졌거나이 데이터 격자에 단 하나의 열만 있기 때문에 뭔가 어쩌면 ComboBox에서 트리거 할 필요가 있을지도 모릅니다. 빈 행을 볼 수 있고 그렇지 않은 경우 빈 행을 만들 수 있습니까?

내 문제를 일치하는 게시물을 찾을 수 없습니다했지만 내가이있을거야 ...

나는이 작업을 가지고 있지만 일단 DataGrids를 포함하지 않는 다른 솔루션, 내 옆에있는 작업이있을 수 있습니다를 콤보 박스의 2 열을 포함하는 DataGrid이며, 거기에서 작업해야합니다.

답변

2

그냥 편집 템플릿을 추가해야합니다

 <Grid> 
      <DockPanel Grid.Column="0" Grid.Row="0"> 
       <TextBlock DockPanel.Dock="Top" Text="Role Groups"/> 
       <DataGrid DockPanel.Dock="Bottom" Name="dgRoleGroups" AutoGenerateColumns="False" 
          CanUserAddRows="True" CanUserDeleteRows="True" 
          HorizontalAlignment="Left" ItemsSource="{Binding ListSecurityUserRoleGroup}"> 
        <DataGrid.Columns> 

         <DataGridTemplateColumn Header="Role Group" Width="*"> 
          <DataGridTemplateColumn.CellTemplate> 
           <DataTemplate> 
            <ComboBox ItemsSource="{Binding ListSecurityRoleGroup, 
          RelativeSource={RelativeSource AncestorType=UserControl}}" SelectedValue="{Binding RoleGroupID,UpdateSourceTrigger=PropertyChanged}" 
            DisplayMemberPath="Description" SelectedValuePath="ID" IsHitTestVisible="False"> 

            </ComboBox> 
           </DataTemplate> 
          </DataGridTemplateColumn.CellTemplate> 
          <DataGridTemplateColumn.CellEditingTemplate> 
           <DataTemplate> 
            <ComboBox ItemsSource="{Binding ListSecurityRoleGroup, 
          RelativeSource={RelativeSource AncestorType=UserControl}}" 
            DisplayMemberPath="Description" SelectedValuePath="ID" 
               SelectedValue="{Binding RoleGroupID,UpdateSourceTrigger=PropertyChanged}" 
            /> 
           </DataTemplate> 
          </DataGridTemplateColumn.CellEditingTemplate> 
         </DataGridTemplateColumn> 

        </DataGrid.Columns> 
       </DataGrid> 
      </DockPanel> 
     </Grid> 

당신은 또한 TextBlock을 같이 할 수있는 콤보 상자 템플릿을 수정할 수 있습니다 일

<ComboBox.Template> 
     <ControlTemplate> 
      <TextBlock Text="{Binding SelectedItem.Description,RelativeSource={RelativeSource Mode=TemplatedParent}}"></TextBlock> 
     </ControlTemplate> 
    </ComboBox.Template> 
+0

감사합니다; 그러나 지금은 새 행에서 드롭 다운을 시작하기 전에 세 번 클릭해야합니다. 처음 클릭하면 콤보 주변에 검은 색 테두리가 생깁니다. 두 번째는 파란색 강조 표시를 적용하고 세 번째는 드롭 다운을 활성화합니다. 나는이 문제를 해결할 수 있는지 알아볼 것입니다. 또한 텍스트 상자처럼 보이게 만드는 차이점을 볼 수 있습니다. - 감사합니다. – andrew

관련 문제