Можно ещё сделать свой UserControl, в который поместить Ellipse и всю логику модификации его внешнего вида в XAML. Но нужно ли оно? Думаю, нет. Способов много это сделать.
<DataGrid
AutoGenerateColumns="False"
ItemsSource="{Binding Income}">
<DataGrid.Columns>
<DataGridTemplateColumn
CanUserReorder="False"
CanUserResize="False"
CanUserSort="False"
IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate DataType="viewModels:IncomeViewModel">
<Ellipse Fill="{Binding IsModified, Converter={StaticResource BooleanToBrushConverter}}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid>
using GalaSoft.MvvmLight;
namespace WpfApp.ViewModels
{
public class IncomeViewModel : ViewModelBase
{
private bool _isModified;
public bool IsModified
{
get { return _isModified; }
set { Set(ref _isModified, value); }
}
}
}
using System;
using System.Globalization;
using System.Windows.Data;
using System.Windows.Media;
namespace WpfApp.Converters
{
[ValueConversion(typeof(bool), typeof(SolidColorBrush))]
public class BooleanToBrushConverter : IValueConverter
{
public SolidColorBrush TrueBrush { get; set; } = new SolidColorBrush(Colors.Tomato);
public SolidColorBrush FalseBrush { get; set; } = new SolidColorBrush(Colors.CornflowerBlue);
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool)value ? TrueBrush : FalseBrush;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return Binding.DoNothing;
}
}
}