2017-02-06 5 views
1

Ich habe ein Datagrid-Jobs wie diese zeigen:ToggleButton auf Sammlung getoggelt aktualisieren

enter image description here

Jetzt habe ich einige BackgroundTasks in regelmäßigen Abständen die Daten zu aktualisieren.

Wenn ich die erste Zeile aktualisieren wird automatisch umgeschaltet.

ich kann nicht herausfinden, warum ...

Das ist mein 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> 
[...]/> 

Antwort

1

Es ist unklar, warum ein RelativeSource für eine Zeile der Zelle Vorlage benötigt wird, Bindung und konnte es immer bekommen Reihe 1 für alle Datenanforderungen unabhängig von der tatsächlichen Zeile. (?)

Der Datenkontext der Zeile sollte den tatsächlichen Verweis auf das benötigte Element enthalten.

Entfernen Sie die RelativeSource Bindung für nur eine direkte geerbte Datenkontextbindung des Objekts.

Wenn das nicht funktioniert, brechen Sie Ihre Situation in ein Demo-Beispiel aus (das Sie stattdessen hier posten könnten) und reproduzieren die Situation. Das Erstellen der Demo kann Ihnen helfen, den Grund für einen Fehler zu finden.

Verwandte Themen