<DataGrid.RowStyle>
<Style TargetType="DataGridRow" >
<Setter Property="Background" Value="AntiqueWhite" />
<Style.Triggers>
<Trigger Property="IsEditing" Value="true">
<Setter Property="Background" Value="red" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
을하지만 것 또한 다음과 같은 동작 같은 :
- 변경 다시 후 편집이 취소 된 경우 는 기본 색으로 다시 변경 저장 기본 색상에
이렇게하는 방법에 대한 제안 사항이 있으십니까?
UPDATE :
조금 더 명확하게 - 단지 다른 뭔가를 찾고 - I가 위의 코드를 기대하는대로 동작합니다. 그것은 행을 편집 할 때만 뒤 색상을 변경합니다. 변경 사항을 저장하기 전에 해당 행을 탐색하면 배경색이 다시 기본값으로 돌아갑니다. 변경 사항이 저장 될 때까지 편집 백코 아웃을 편집 된 각 행에 유지하겠습니다. 저장하기 전에 데이터를 변경되지 않은 상태로 다시 변경하면 배경색을 기본값으로 다시 설정하고 싶습니다. 여기
코드의 더 :
<DataGrid EnableRowVirtualization="True" ItemsSource="{Binding CurrentTransactionList}" AutoGenerateColumns="false" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" HorizontalAlignment="Stretch" Margin="5" Name="TransactionTable" VerticalAlignment="Stretch" RowEditEnding="TransactionTable_RowEditEnding">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow" >
<Setter Property="Background" Value="AntiqueWhite" />
<Style.Triggers>
<Trigger Property="IsEditing" Value="true">
<Setter Property="Background" Value="red" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Width="40" Binding="{Binding Id}" IsReadOnly="True" Foreground="Gray" />
<DataGridTextColumn Header="Label" Width="250" Binding="{Binding Label}" />
<DataGridComboBoxColumn Header="Stat" SelectedItemBinding="{Binding Stat}" ItemsSource="{Binding Source={StaticResource stats}}" Width="125" />
<DataGridTextColumn Header="Change" Binding="{Binding Change}" Width="75" />
</DataGrid.Columns>
TransactionTable_RowEditEnding 이벤트 핸들러는 업데이트 버튼을 할 수 있습니다.
private ObservableCollection<StatTransactionValue> currentTransactionList;
public ObservableCollection<StatTransactionValue> CurrentTransactionList {
get { return currentTransactionList; }
set {
if (value != currentTransactionList) {
currentTransactionList = value;
NotifyPropertyChanged("CurrentTransactionList");
}
}
}
public void SetCurrentTransactionList(long ItemId) {
CurrentTransactionList = Gateway.GetTransactions(ItemId);
}
public void UpdateTransactions() {
Gateway.UpdateTransactions(CurrentTransactionList);
}
게이트웨이 ServiceStack OrmLite SQLite는 SQLite는 사용하는 간단한 호출이다
이것은 relavent 뷰 모델이다.
생각하십니까?
감사합니다. 편집 된 ID 모음을 유지하면서이 작업을 수행했습니다. 편집/업데이트 된 행을 색칠하는 논리는 트리거에 비해 너무 복잡하므로 코드에서 수행해야합니다. – IUnknown