2017-04-25 2 views
0

저는 Datagrid의 RowdetailsTemplate에 콤보 박스가 있습니다. 열을 전환하면 선택한 값으로 Datagridcolumn의 값이 자동으로 변경됩니다. 콤보 상자의 값이RowDetailTemplate의 Combobox는 선택된 열 앞에 모두 업데이트됩니다.

public class BMFill 
{ 
    public BMFill() 
    { 
     colCBArt.Add(new CBArt { Name = "test" , Nr = 0 }); 
     colCBArt.Add(new CBArt { Name = "hallo", Nr = 1 }); 
     colCBArt.Add(new CBArt { Name = "welt", Nr = 2 }); 
     colCBArt.Add(new CBArt { Name = "blubb", Nr = 3 }); 
     colCBArt.Add(new CBArt { Name = "lalalala", Nr = 4 }); 

    } 
    List<CBArt> colCBArt = new List<CBArt>(); 
    CollectionViewSource cvsCBArt = null; 


    public ICollectionView ViewCBArt 
    { 
     get 
     { 
      if (cvsCBArt == null) cvsCBArt = new CollectionViewSource() { Source = colCBArt }; 
      return cvsCBArt.View; 
     } 
    } 


    public class CBArt 
    { 
     public string Name { get; set; } 
     public int Nr { get; set; } 
    } 
} 

<Window.Resources> 
    <local:BMFill x:Key="vm"/> 
</Window.Resources> 
<DataGrid x:Name="dg"> 
    <DataGrid.RowDetailsTemplate> 
     <DataTemplate> 
      <ComboBox Margin="10,10,10,10" Grid.Column="1" Grid.Row="1" 
            SelectedValuePath="Nr" 
            SelectedValue="{Binding NrDG,UpdateSourceTrigger=PropertyChanged}" 
            DisplayMemberPath="Name" 
            ItemsSource="{Binding Source={StaticResource vm}, Path=ViewCBArt}" 
            /> 
     </DataTemplate> 
    </DataGrid.RowDetailsTemplate> 
</DataGrid> 

난 내 문제를 이해 수 있기를 바랍니다 나를 도울 수를 변경하는 경우 데이터 격자 열의 값은

답변

0
SelectedValuePath="Nr" 
            SelectedValue="{Binding NrDG,UpdateSourceTrigger=PropertyChanged}" 
            DisplayMemberPath="Name" 
            ItemsSource="{Binding Source={StaticResource vm}, Path=ViewCBArt}" 
            IsSynchronizedWithCurrentItem="False" 

0

당신은 DropDownOpened에 대한 이벤트 처리기를 추가 할 수 있습니다) = 변경해야하며, DropDownClosed 이벤트는 드롭 다운이 열리는 동안 플래그를 발생시키고 DatagridColumn의 값을 변경하는 동안이 플래그가 발생하지 않는지 확인합니다.

XAML :

 <ComboBox Margin="10,10,10,10" Grid.Column="1" Grid.Row="1" 
           SelectedValuePath="Nr" 
           SelectedValue="{Binding NrDG,UpdateSourceTrigger=PropertyChanged}" 
           DisplayMemberPath="Name" 
           ItemsSource="{Binding Source={StaticResource vm}, Path=ViewCBArt}" 
           DropDownOpened="OnDropDownOpened" DropDownClosed="OnDropDownClosed" 
           /> 

C 번호 :

private bool _comboxBoxIsOpened = false; 
    private void OnDropDownOpened(object sender, EventArgs e) 
    { 
     _comboxBoxIsOpened = true; 
    } 

    private void OnDropDownClosed(object sender, EventArgs e) 
    { 
     _comboxBoxIsOpened = false; 
    } 
+0

내 문제는 콤보 상자의 값을 변경하면 내가 DataGrid 열의를 업데이트해야 나를하여이 솔루션 작업 –

+0

@ ToniSchönberger 그래서 Opened에 이전 값을 저장하고 Closed에서 변경되었는지 확인하십시오 (글로벌 v ariable). 그렇다면 Datagrid Colum을 업데이트하십시오. – ShugiShugi

관련 문제