2010-02-04 5 views
0

J'ai une case à cocher que j'ai besoin de lier à un bool dans la source et également désactiver ou activer un conteneur.Liaison propriété Silverlight UI à la source

Ma source est la suivante pour la liaison, mais il ne fonctionne pas:

private bool isMapEditOn = false; 

OnLoadFunction() 
{ 
    //Bindings 
    Binding mapEditBind = new Binding("IsChecked") { Source = isMapEditOn, Mode = BindingMode.TwoWay }; 

    //Bind to check or uncheck the mapEdit Checkbox 
    ChckEditMap.SetBinding(ToggleButton.IsCheckedProperty, mapEditBind); 
    //Bind to disable children (point and area buttons). 
    EditBtnContainer.SetBinding(IsEnabledProperty, mapEditBind); 
} 

Lorsque je teste en cochant et décochant la case, il n'Autel pas isMapEditOn.

Répondre

0

La meilleure façon de le faire est d'envelopper le isMapEditOn dans une propriété. Si vous souhaitez modifier la notification de la source que vous aurez besoin de mettre en œuvre INotifyPropertyChanged (non représenté ici Voir this la page pour plus d'informations sur la mise en œuvre de cette interface.):

private bool _isMapEditOn = false; 

public bool IsMapEditOn 
{ 
    get 
    { 
     return _isMapEditOn; 
    } 
    set 
    { 
     _isMapEditOn = value; 
    } 
} 

OnLoadFunction() 
{ 
    //Bindings 
    Binding mapEditBind = new Binding("IsMapEditOn") { Source = this, Mode = BindingMode.TwoWay }; 

    //Bind to check or uncheck the mapEdit Checkbox 
    ChckEditMap.SetBinding(ToggleButton.IsCheckedProperty, mapEditBind); 
    //Bind to disable children (point and area buttons). 
    EditBtnContainer.SetBinding(IsEnabledProperty, mapEditBind); 
} 
0

Essayez d'utiliser le type bool? au lieu de bool. La propriété isChecked est définie comme:

public bool? IsChecked { get; set; } 
+0

J'ai changé bool privé isMapEditOn = false; à bool privé? isMapEditOn = faux; et ça ne marche pas si c'est de quoi tu parles. –

Questions connexes