Я привязываю свои объекты к форме редактирования в WPF. В DataTemplate я хочу иметь возможность установить цвет фона корневого контейнера в DataTemplate, чтобы показать, что он был изменен, и эти изменения еще не были отправлены в базу данных.
Вот очень простой пример, демонстрирующий то, о чем я говорю (простите за ошибки):
<Page ...>
<Page.DataContext>
<vm:MyPageViewModel /> <!-- Holds reference to the DataContext -->
</Page.DataContext>
<ItemsControl
ItemsSource = {Binding Items}>
<ItemsControl.Resources>
<DataTemplate
DataType="Lol.Models.Item"> <!-- Item is L2S entity -->
<!-- In real life, I use styles to set the background color -->
<TextBlock Text="{Binding IsDirty, StringFormat='Am I dirty? /{0/}'}"/>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
</Page>
В примере просто напечатано «Я грязный? Да» или «Я грязный? Нет», но идею вы поняли.
Для этого мне нужно добавить общедоступное свойство к моему Item (частичный класс, простой) , которое может определять, является ли объект грязным или нет. Это сложный момент.
public partial class Item
{
public bool IsDirty
{
get
{
throw new NotImplementedException("hurf durf");
}
}
}
Вне сущности это довольно просто (если у вас есть DataContext, к которому сущность прикреплена). Внутри не так уж и много.
Какие у меня здесь варианты?
Изменить: я не думаю, что здесь есть одно хорошее решение, поэтому приветствуются предложения по обходным путям.
(Хорошо, существуют аналогичные вопросы, но все они о том, как определить это вне самой сущности и использовать DataContext, к которому сущность прикреплена.)