2017-02-06 12 views
1

У меня есть DataGrid, показывающий работу, как это:ToggleButton переключен на коллекции обновления

enter image description here

Теперь я получил некоторые BackgroundTasks периодически обновлять данные.

При обновлении первая строка автоматически переключается.

Я не могу понять, почему ...

Это мой xaml:

<DataGrid Grid.Row="1" 
      ItemsSource="{Binding Path=JobCollectionView}" 
      SelectedItem="{Binding Path=SelectedEntry, 
           UpdateSourceTrigger=PropertyChanged, 
           Mode=TwoWay}" 
      IsReadOnly="True"      
      x:Name="dataGrid" 
      AutoGenerateColumns="False" 
      CanUserAddRows="False"    
      SelectionUnit="FullRow" 
      SelectionMode="Single" 
      ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
      CanUserResizeColumns="True"      
      VerticalContentAlignment="Center"> 
[...]> 
<DataGridTemplateColumn CellStyle="{StaticResource DataGridNonFocusableCell}"> 
    <DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <ToggleButton IsChecked="{Binding RelativeSource={RelativeSource AncestorType=DataGridRow}, 
             Path=DetailsVisibility, 
             Converter={StaticResource BoolToVisConverter}, 
             Mode=TwoWay, 
             FallbackValue=False}" 
        Height="20" 
        Width="20" /> 
    </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 
[...]/> 

ответ

1

Неясно, почему RelativeSource связывание необходимо для шаблона ячейки подряд, и это может быть всегда получать строки 1 для всех своих данных, независимо от фактической строки. (?)

В тексте данных строки должна содержаться фактическая ссылка на необходимый элемент.

Устранить привязку RelativeSource только в отношении унаследованного привязки объекта datacontext.

Если это не сработает, разложите свою ситуацию в демонстрационный пример (который вы могли бы разместить здесь), воспроизводя ситуацию. Создание демонстрации может помочь вам разобраться в причинах сбоя.