2012-07-24 1 views
6

は、私は次のような状況フィールドのプロパティにWPFコントロールをバインドできますか?私はクラス間のいくつかの機能を分割するために必要なので

XAMLコード

<CheckBox IsChecked="{Binding MyObjectField.MyBoolean}" /> 

ビューモデル

... 
public MyInternalObject MyObjectField; 
... 

MyObjectにクラス

public class MyInternalObject { 
    ... 
    public bool MyBoolean { get; set; } 
    ... 
} 
に到着しました

レプリカ以外は動作しませんView ModelクラスのMyBooleanプロパティ。

public bool MyBoolean 
{ 
    get { return MyInternalObject.MyBoolean; } 
    set { MyInternalObject.MyBoolean=value; } 
} 

アイデアはありますか?

答えて

4

いいえ、できません。システムの結合はDataContextの中

プロパティ(すなわち、あなたのVM)を見つけるためにリフレクションを使用しているため

これは、フィールドを探していません。これが助けてくれるといいなあ

+0

だから、VMのプロパティを複製することは、それを行うための唯一の方法です...あなたの助け –

+0

はいため おかげで、また、プロパティのセッターで値をsttingた後、「MyBoolean」のためにPropertyChangedを上げます。 – ethicallogics

+0

はい、私は例を単純化していましたが、とにかくそれを指摘してくれてありがとう。 –

5

まだできません(in WPF Version 4.5 you can bind to a static property)。しかし、App.xaml.csでプロパティを作成することができます。

public partial class App : Application 
{ 
    public bool MyBoolean { get; set; } 
} 

そしてどこからでもバインドできます。

<CheckBox IsChecked="{Binding MyBoolean, Source={x:Static Application.Current}}"> 
+0

ありがとうございます。このオプションも知っておいてよかったです。 –

関連する問題