2009-11-24 2 views
0

WPF DataGrid (WPF Toolkit)에서 셀의 편집 템플리트에 문제가 있습니다. 템플릿은 ComboBox로 빌드되고 ComboBox의 ItemsSource는 런타임에로드됩니다.DataTemplate 및 ObjectDataProvider 새로 고침 문제

이 평균 코드입니다 ...

<ObjectDataProvider x:Key="dataValuesProvider" MethodName="GetValues" /> 

<toolkit:DataGrid 
ItemsSource="{Binding Path=MyItems}"> 
<toolkit:DataGridTemplateColumn 
    Header="Property1"> 
    <toolkit:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
     <TextBlock Text="{Binding Path=Property1, ValidatesOnDataErrors=true}"/> 
     </DataTemplate> 
    </toolkit:DataGridTemplateColumn.CellTemplate> 
    <toolkit:DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
     <ComboBox 
      SelectedValue="{Binding Path=Property1, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" 
      IsEditable="True" 
      IsSynchronizedWithCurrentItem="False" 
      ItemsSource="{Binding Source={StaticResource dataValuesProvider}, Mode=OneWay}" 
      />           
      </DataTemplate> 
    </toolkit:DataGridTemplateColumn.CellEditingTemplate> 
</toolkit:DataGridTemplateColumn></toolkit:DataGrid> 

지금, 나는이 문제가 있습니다.

각 행마다 다른 값으로 dataValuesProvider를 업데이트해야합니다. 그럼 난 dataValues의 resetchanged 이벤트에 dataValuesProvider (dataValuesProvider = null)의 재설정을 삽입했습니다.

(dataValuesProvider는 선택한 행의 특정 셀에 대한 입력 이후에로드됩니다.)

이것은 문제입니다. dataValuesProvider (새 행의 선택 변경시)를 다시 설정하면 ComboBox의 SelectedValue가 수정되고 이전 행의 Property1이 지워집니다.

셀을 편집 할 때까지 셀의 편집 템플릿이 바인딩 연결을 업데이트하지 않기 때문에이 동작이 있다고 생각합니다. 그렇지?

이 문제를 방지하려면 어떻게해야합니까?

답변

0

난 아직 내가 문제를 보여 간단한 프로젝트를 정의하지만

를 해결하지 않았습니다.

당신은이 링크에서 다운로드 할 수 있습니다 : http://pollosky.it/wp-content/uploads/2009/12/ObjectProviderTest.zip

봅니다 첫 번째 행의 두 번째 셀에서 selectvalue 다음 두 번째 행으로 이동합니다. 첫 번째 행의 속성 값이 지워집니다!

어떻게하면됩니까?

+0

누구? 이 문제에 관한 정보 나 의견은 나에게 유용합니다 ... 어떻게 생각하십니까? –