0
如何突出顯示已編輯的DataGrid中的單元格?通過使用觸發器的某種樣式的XAML解決方案更可取。但如果不可能,那麼後面的代碼就足夠了。如何突出顯示數據網格中已編輯的單元格
我沒有發佈任何代碼,因爲我沒有任何突破的問題。
如何突出顯示已編輯的DataGrid中的單元格?通過使用觸發器的某種樣式的XAML解決方案更可取。但如果不可能,那麼後面的代碼就足夠了。如何突出顯示數據網格中已編輯的單元格
我沒有發佈任何代碼,因爲我沒有任何突破的問題。
簡單的答案是通過結合創建樣式瞄準DataGridCell和觸發條件,希望下面的步驟很容易遵循:
//lets say you bind datagrid to
List<RowValues> RowsView {get;}
//were RowValues is
List<RowValue> RowValues
// and RowValue is
public class RowValue
{
public bool IsEdited
{
get {return _isEdited;}
set
{
if(_isEdited== value) return;
_isEdited= value;
RaisePropertyChanged(()=>IsEdited);
}
}
public string Value
{
get {return _value;}
set
{
if(_value == value) return;
_value = value;
//check if the value is edited
IsEdited = _value == _originalValue;
RaisePropertyChanged(()=>Value);
}
}
}
//so in code accessing the structure would look like:
var row = RowView[0];
var cell = row[1];
cell.IsEdited... just to make it easier to see the XAML bindings below..
<DataGrid ItemsSource="{Binding RowsView}">
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="Transparent" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowValues[0].IsEdited}" Value="True">
<Setter Property="Background" Value="{StaticResource MissingDataBrush}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTemplateColumn.CellStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding RowValues[0].Value}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding RowValues[0].Value}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
....