エンティティを 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がある限り)。内部では、それほどではありません。
ここでのオプションは何ですか?
編集: ここに 1 つの良い解決策があるとは思わないので、回避策の提案を歓迎します。
(同様の質問がありますが、それらはすべて、エンティティ自体の外部からこれを判断し、エンティティが接続されているDataContextを使用する方法に関するものです。)