2012-07-24 7 views
6

perché avevo bisogno di dividere alcune funzionalità tra le classi, sono arrivato alla seguente situazionePosso associare un controllo WPF alla proprietà di un campo?

codice XAML

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

vista del modello

... 
public MyInternalObject MyObjectField; 
... 

classe MyObject

public class MyInternalObject { 
    ... 
    public bool MyBoolean { get; set; } 
    ... 
} 

Non funziona se non faccio la replica la proprietà MyBoolean nella classe View Model.

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

Qualcuno ha un'idea?

risposta

4

No non puoi. Perché vincolante sistema utilizza la riflessione per trovare la

Proprietà a DataContext (cioè il vostro VM)

Non sembra per i campi. Spero che questo ti possa aiutare.

+0

Così replicare le proprietà del VM è l'unico modo per farlo ... Grazie per il vostro aiuto –

+0

sì e anche Raise PropertyChanged per "myBoolean" dopo stting il valore nel setter della proprietà. – ethicallogics

+0

Sì, stavo semplificando l'esempio, ma comunque grazie al punto. –

5

Non è ancora possibile (in WPF Version 4.5 you can bind to a static property). Ma è possibile creare la vostra proprietà in App.xaml.cs

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

e si legano da ogni dove.

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

Grazie. Buono a sapersi anche questa opzione. –