BindableObject Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Fournit un mécanisme par lequel les développeurs d’applications peuvent propager les modifications qui sont apportées aux données d’un objet vers un autre objet, en activant la validation, le forçage de type et un système d’événements. BindableProperty.
public abstract class BindableObject : System.ComponentModel.INotifyPropertyChanged, Xamarin.Forms.Internals.IDynamicResourceHandler
type BindableObject = class
interface INotifyPropertyChanged
interface IDynamicResourceHandler
- Héritage
-
BindableObject
- Dérivé
- Implémente
Remarques
La BindableObject classe fournit un mécanisme de stockage de données qui permet au développeur d’applications de synchroniser les données entre les objets en réponse aux modifications, par exemple, entre le modèle d’affichage et de vue dans le modèle de conception MVVM. Tous les éléments visuels de l’espace de noms héritent de BindableObject la Xamarin.Forms classe, afin qu’ils puissent tous être utilisés pour lier les données derrière leurs éléments d’interface utilisateur à Afficher les modèles fournis par le développeur d’applications.
Pour lier les données derrière une propriété dans un BindableObjectaffichage , généralement, à une propriété dans le modèle d’affichage, les développeurs d’applications doivent effectuer les opérations suivantes.
Tout d’abord, le développeur crée une paire de propriétés sur la vue, dont l’une est une BindablePropertyet l’autre qui est une propriété de tout type requis. Dans le code ci-dessous, MockBindableObject
il s’agit généralement d’un objet d’interface utilisateur dans le code de production. Les développeurs d’applications doivent noter l’utilisation et GetValue(BindableProperty) la définition de SetValue(BindableProperty, Object) la valeur sur la propriété liée; La propriété du type souhaité fournit l’interface que la cible de la propriété liée implémente.
class MockBindableObject : BindableObject
{
// App developers should use the method below in production code for
// better performance
public static readonly BindableProperty BoundNameProperty =
BindableProperty.Create ("Foo", typeof (string),
typeof (MockBindableObject),
default(string));
// App developers should use the method below during development for
// design-time error checking as the codebase evolves.
// public static readonly BindableProperty FooProperty
// = BindableProperty.Create<MockBindableObject, string> (
// o => o.Foo, default (string)
// );
public string BoundName
{
get { return (string) GetValue (BoundNameProperty); }
set { SetValue (BoundNameProperty, value); }
}
}
Deuxièmement, le développeur crée l’implémentation de la propriété liée dans une classe qui implémente l’interface INotifyPropertyChanged . Dans le modèle de conception MVVM, cela est généralement effectué par le modèle d’affichage. Les développeurs d’applications doivent implémenter l’interface sur les INotifyPropertyChanged classes qu’ils souhaitent utiliser en tant que modèles d’affichage. Dans l’exemple ci-dessous, les développeurs d’applications doivent prendre note de la façon idiomatique que la Name
propriété est implémentée pour, tout d’abord, s’assurer que la propriété a réellement changé et retournée s’il n’a pas été effectuée, puis affecter la valeur et appeler la OnPropertyChanged(String) méthode. En outre, la Name
propriété de l’exemple ci-dessous encapsule simplement le name
champ. Dans la pratique, le développeur d’applications peut choisir un autre modèle dans lequel stocker des données d’application.
class MockViewModel : INotifyPropertyChanged
{
string name;
public string Name
{
get { return name; }
set
{
// OnPropertyChanged should not be called if the property value
// does not change.
if (name == value)
return;
name = value;
OnPropertyChanged ();
}
}
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged (string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler (this, new PropertyChangedEventArgs (propertyName));
}
}
Troisièmement, et enfin, le développeur d’applications lie une instance d’un BindableObject à une instance qui implémente INotifyPropertyChanged. Dans le vocabulaire du modèle de conception MVVM, il s’agit de « lier une instance de la vue à une instance d’un modèle d’affichage ». Une fois cette étape terminée, les modifications apportées aux données sont propagées entre l’affichage et le modèle d’affichage d’une manière déterminée par la valeur de l’énumération BindingMode , le cas échéant, qui a été passée pendant l’étape de liaison.
Le code ci-dessous, lorsqu’il est inclus dans un projet qui référence les classes ci-dessus, crée une instance des deux MockBindable
et MockViewModel
, effectue une intitialisation, définit la liaison, puis illustre une liaison unidirectionnelle. Le code ci-dessous s’exécute sans lever d’exception.
public static void OneWayDemo ()
{
var view = new MockBindableObject ();
var viewModel = new MockViewModel ();
// Pre-load the ViewModel, for demonstration purposes
viewModel.Name = "Testing";
// Create a one-way (default) binding
view.SetBinding (MockBindableObject.BoundNameProperty, new Binding ("Name"));
// App developers should only set the binding context after all
// calls to SetBinding() have been made, for performance reasons.
view.BindingContext = viewModel;
// In a one way binding, the ViewModel value will be used to update
// the values in the View during initialization
if (view.BoundName != "Testing")
throw new Exception ();
view.BoundName = "gnitseT";
// in a one way binding, changes to the View will NOT update the ViewModel
if (viewModel.Name == "gnitseT")
throw new Exception ();
}
Constructeurs
BindableObject() |
Initialise une nouvelle instance de la classe BindableObject. |
Champs
BindingContextProperty |
Implémente la propriété liée dont l’interface est fournie par la propriété BindingContext. |
Propriétés
BindingContext |
Obtient ou définit l’objet qui contient les propriétés qui seront ciblées par les propriétés liées appartenant à ce BindableObject. |
Dispatcher |
Fournit un mécanisme par lequel les développeurs d’applications peuvent propager les modifications qui sont apportées aux données d’un objet vers un autre objet, en activant la validation, le forçage de type et un système d’événements. BindableProperty. |
Méthodes
ApplyBindings() |
Applique les liaisons à BindingContext. |
ClearValue(BindableProperty) |
Efface toute valeur définie par SetValue pour |
ClearValue(BindablePropertyKey) |
Efface toute valeur définie par SetValue pour la propriété qui est identifiée par |
CoerceValue(BindableProperty) |
Fournit un mécanisme par lequel les développeurs d’applications peuvent propager les modifications qui sont apportées aux données d’un objet vers un autre objet, en activant la validation, le forçage de type et un système d’événements. BindableProperty. |
CoerceValue(BindablePropertyKey) |
Fournit un mécanisme par lequel les développeurs d’applications peuvent propager les modifications qui sont apportées aux données d’un objet vers un autre objet, en activant la validation, le forçage de type et un système d’événements. BindableProperty. |
GetValue(BindableProperty) |
Retourne la valeur qui est contenue dans BindableProperty. |
GetValues(BindableProperty, BindableProperty) |
Obsolète.
Pour un usage interne par la plateforme Xamarin.Forms. |
GetValues(BindableProperty, BindableProperty, BindableProperty) |
Obsolète.
Pour un usage interne par la plateforme Xamarin.Forms. |
IsSet(BindableProperty) |
Retourne |
OnBindingContextChanged() |
Substituez cette méthode pour exécuter une action lorsque le BindingContext change. |
OnPropertyChanged(String) |
Appelez cette méthode à partir d’une classe enfant pour avertir qu’un changement s’est produit au niveau d’une propriété. |
OnPropertyChanging(String) |
Appelez cette méthode à partir d’une classe enfant pour avertir qu’un changement va se produire au niveau d’une propriété. |
RemoveBinding(BindableProperty) |
Supprime une liaison précédemment définie. |
SetBinding(BindableProperty, BindingBase) |
Affecte une liaison à une propriété. |
SetInheritedBindingContext(BindableObject, Object) |
Définit le contexte hérité sur un élément imbriqué. |
SetValue(BindableProperty, Object) |
Définit la valeur de la propriété spécifiée. |
SetValue(BindablePropertyKey, Object) |
Définit la valeur de propertyKey. |
SetValueCore(BindableProperty, Object, SetValueFlags) |
Pour un usage interne par la plateforme Xamarin.Forms. |
UnapplyBindings() |
Supprime toutes les liaisons précédemment définies. |
Événements
BindingContextChanged |
Déclenché chaque fois que la propriété BindingContext est modifiée. |
PropertyChanged |
Déclenché lorsqu’une propriété a été modifiée. |
PropertyChanging |
Déclenché lorsqu’une propriété est sur le point d’être modifiée. |
Implémentations d’interfaces explicites
IDynamicResourceHandler.SetDynamicResource(BindableProperty, String) |
Pour un usage interne par la plateforme Xamarin.Forms. |
Méthodes d’extension
GetPropertyIfSet<T>(BindableObject, BindableProperty, T) |
Fournit un mécanisme par lequel les développeurs d’applications peuvent propager les modifications qui sont apportées aux données d’un objet vers un autre objet, en activant la validation, le forçage de type et un système d’événements. BindableProperty. |
SetAppThemeColor(BindableObject, BindableProperty, Color, Color) |
Fournit un mécanisme par lequel les développeurs d’applications peuvent propager les modifications qui sont apportées aux données d’un objet vers un autre objet, en activant la validation, le forçage de type et un système d’événements. BindableProperty. |
SetBinding(BindableObject, BindableProperty, String, BindingMode, IValueConverter, String) |
Crée et applique une liaison à une propriété. |
SetBinding<TSource>(BindableObject, BindableProperty, Expression<Func<TSource,Object>>, BindingMode, IValueConverter, String) |
Obsolète.
Crée et applique une liaison à partir d’une expression. |
SetOnAppTheme<T>(BindableObject, BindableProperty, T, T) |
Fournit un mécanisme par lequel les développeurs d’applications peuvent propager les modifications qui sont apportées aux données d’un objet vers un autre objet, en activant la validation, le forçage de type et un système d’événements. BindableProperty. |