2012-07-24 16 views
6

Porque necesitaba para dividir algunas funciones entre las clases, he llegado a la siguiente situación¿Puedo vincular un control WPF a la propiedad de un campo?

código XAML

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

vista del modelo

... 
public MyInternalObject MyObjectField; 
... 

clase MiObjeto

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

No funciona a menos que yo replique te la propiedad MyBoolean en la clase View Model.

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

¿Alguien tiene una idea?

Respuesta

4

No, no puedes. Dado que el sistema de enlace utiliza la reflexión para encontrar el

Propiedad en DataContext (es decir, su VM)

No se ve para los campos. Espero que esto sea de ayuda.

+0

Así replicar las propiedades de la máquina virtual es la única manera de hacerlo ... Gracias por su ayuda –

+0

sí y también plantean PropertyChanged para "myBoolean" después stting el valor en la incubadora de la propiedad. – ethicallogics

+0

Sí, estaba simplificando el ejemplo, pero de todos modos gracias a señalarlo. –

5

Todavía no puedes (in WPF Version 4.5 you can bind to a static property). Pero puede crear su propiedad en App.xaml.cs

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

y enlazar desde cualquier lugar.

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

Gracias. Es bueno saber esta opción también. –

Cuestiones relacionadas