2011-12-07 9 views
1

特定の種類のDataContextでのみ動作するUserControlを作成したいと考えています。その目的のために 私はこのような何かをしています:WPFでのDataContextのオーバーライド

public new AutoSuggestViewModel DataContext 
      { get { return (AutoSuggestViewModel)base.DataContext; } 
       set { base.DataContext = value; } } 

これは残念ながらネットの反射を破る傾向にあると私はの一部としてコントロールを使用すると、Visual Studioのデザインビューでエラーに制御を引き起こし、さらに悪化DataGridTemplateColumnの編集テンプレートはエラーを引き起こし、壊れたリフレクションのために正しく機能しません。それはAmbiguousMatchExceptionとしてdatagrid.BeginEdit()

として出てくる誰もこの問題を回避する方法とそれを達成する方法を知っていますか? はい、DataContextを返すMyDataContextのような別のプロパティを使用することを考えましたが、可能であればもっとエレガントなものを探しています。

答えて

2

もう少しエレガントなのは、DataContextにはまったく当てはまらないということです。実際、なぜそれをしたいのかは私には分かりません。 が正しいタイプのであるという別の依存関係プロパティを定義するだけではどうですか?次に、コントロールのコンシューマは、データコンテキストへのバインド、またはその他の標準のWPFイディオムの使用によって、コントロールに割り当てられます。

+0

こんにちは、ありがとうございます。ユーザーが混乱するため、私はそうしたくありません。これはdatacontextですか、それともバインドするdatacontextですか?私はそれから、両方のプロパティを同期させておく必要があります。それはちょうどノイズです。 – user668032

0

正しい種類のオブジェクトが確実に割り当てられるようにするには、他の方法があります。たとえば、オーバーライドされたメタデータにプロパティ変更コールバックを作成し、新しい値の型をチェックし、それ"。

+0

あなたが言っていることはうまくいくが、十分ではないだろうが。私はDataContextを参照しているときに型付きオブジェクトを持っていなければ、それ以外のときはいつでもキャストする必要があります:) – user668032

+0

私は私の質問への答えを見つけましたが、何らかの理由でスタックオーバーフローによって禁止されています。助けてくれてありがとう。 – user668032

関連する問題