BindableObject Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Specifica un meccanismo con il quale gli sviluppatori di applicazioni possono propagare le modifiche apportate ai dati di un oggetto in un altro oggetto, abilitando la convalida, la coercizione del tipo e un sistema di eventi. BindableProperty.
public abstract class BindableObject : System.ComponentModel.INotifyPropertyChanged, Xamarin.Forms.Internals.IDynamicResourceHandler
type BindableObject = class
interface INotifyPropertyChanged
interface IDynamicResourceHandler
- Ereditarietà
-
System.ObjectBindableObject
- Derivato
- Implementazioni
-
System.ComponentModel.INotifyPropertyChanged IDynamicResourceHandler
Commenti
La BindableObject classe fornisce un meccanismo di archiviazione dati che consente allo sviluppatore dell'applicazione di sincronizzare i dati tra oggetti in risposta alle modifiche, ad esempio, tra il modello di visualizzazione e visualizzazione nel modello di progettazione MVVM. Tutti gli elementi visivi nello Xamarin.Forms spazio dei nomi ereditano dalla BindableObject classe, quindi possono essere usati tutti per associare i dati dietro gli elementi dell'interfaccia utente a Visualizza modelli forniti dallo sviluppatore dell'applicazione.
Per associare i dati dietro una proprietà in una visualizzazione , in genere a una BindableObjectproprietà nel modello di visualizzazione, gli sviluppatori di applicazioni devono eseguire le operazioni seguenti.
Prima di tutto, lo sviluppatore crea una coppia di proprietà nella visualizzazione, una delle quali è un BindablePropertyoggetto e l'altra di cui è una proprietà di qualsiasi tipo richiesto. Nel codice seguente, MockBindableObject
si trova per ciò che in genere è un oggetto interfaccia utente nel codice di produzione. Gli sviluppatori di applicazioni devono notare l'uso di SetValue(BindableProperty, Object) e GetValue(BindableProperty) per ottenere e impostare il valore sulla proprietà associata; La proprietà del tipo desiderato fornisce l'interfaccia che verrà implementata dalla destinazione della proprietà associata.
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); }
}
}
In secondo luogo, lo sviluppatore crea l'implementazione per la proprietà associata in una classe che implementa l'interfaccia System.ComponentModel.INotifyPropertyChanged . Nel modello di progettazione MVVM, questa operazione viene in genere eseguita dal modello di visualizzazione. Gli sviluppatori di applicazioni devono implementare l'interfaccia System.ComponentModel.INotifyPropertyChanged nelle classi che vogliono usare come modelli di visualizzazione. Nell'esempio seguente, gli sviluppatori di app devono prendere nota del modo idiomatico in cui viene implementata la proprietà, prima di tutto, assicurarsi che Name
la proprietà sia effettivamente cambiata e restituisca se non è stata eseguita e quindi assegnare solo il valore e chiamare il OnPropertyChanged(String) metodo. Inoltre, la Name
proprietà nell'esempio seguente esegue semplicemente il wrapping del name
campo. In pratica, lo sviluppatore di applicazioni può scegliere un modello diverso in cui archiviare i dati dell'applicazione.
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));
}
}
In terzo luogo, lo sviluppatore di applicazioni associa un'istanza di BindableObject a un'istanza che implementa INotifyPropertyChanged. Nel vocabolario del modello di progettazione MVVM, si tratta di "associazione di un'istanza della visualizzazione a un'istanza di un modello di visualizzazione". Al termine di questo passaggio, le modifiche apportate ai dati vengono propagate tra la visualizzazione e il modello di visualizzazione in modo determinato dal valore dell'enumerazione, se presente, passato durante il BindingMode passaggio di associazione.
Il codice seguente, quando incluso in un progetto che fa riferimento alle classi precedenti, crea un'istanza di e MockBindable
MockViewModel
, esegue alcune operazioni di intitializzazione, imposta l'associazione e quindi illustra un'associazione unidirezionale. Il codice seguente viene eseguito senza generare un'eccezione.
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 ();
}
Costruttori
BindableObject() |
Inizializza una nuova istanza della classe BindableObject. |
Campi
BindingContextProperty |
Implementa la proprietà associata, la cui interfaccia viene specificata dalla proprietà BindingContext. |
Proprietà
BindingContext |
Ottiene o imposta l'oggetto contenente le proprietà che saranno interessate dalle proprietà associate appartenenti a questo elemento BindableObject. |
Dispatcher |
Specifica un meccanismo con il quale gli sviluppatori di applicazioni possono propagare le modifiche apportate ai dati di un oggetto in un altro oggetto, abilitando la convalida, la coercizione del tipo e un sistema di eventi. BindableProperty. |
Metodi
ApplyBindings() |
Applica le associazioni a BindingContext. |
ClearValue(BindableProperty) |
Cancella qualsiasi valore impostato da SetValue per |
ClearValue(BindablePropertyKey) |
Cancella qualsiasi valore impostato dalla proprietà SetValue identificato da |
CoerceValue(BindableProperty) |
Specifica un meccanismo con il quale gli sviluppatori di applicazioni possono propagare le modifiche apportate ai dati di un oggetto in un altro oggetto, abilitando la convalida, la coercizione del tipo e un sistema di eventi. BindableProperty. |
CoerceValue(BindablePropertyKey) |
Specifica un meccanismo con il quale gli sviluppatori di applicazioni possono propagare le modifiche apportate ai dati di un oggetto in un altro oggetto, abilitando la convalida, la coercizione del tipo e un sistema di eventi. BindableProperty. |
GetValue(BindableProperty) |
Restituisce il valore contenuto in BindableProperty. |
GetValues(BindableProperty, BindableProperty, BindableProperty) |
Obsoleti.
Per uso interno della piattaforma Xamarin.Forms. |
GetValues(BindableProperty, BindableProperty) |
Obsoleti.
Per uso interno della piattaforma Xamarin.Forms. |
IsSet(BindableProperty) |
Restituisce |
OnBindingContextChanged() |
Eseguire l'override di questo metodo per eseguire un'azione quando BindingContext viene modificato. |
OnPropertyChanged(String) |
Chiamare questo metodo da una classe figlio per segnalare una modifica che si è verificata su una proprietà. |
OnPropertyChanging(String) |
Chiamare questo metodo da una classe figlio per segnalare che una proprietà sta per essere modificata. |
RemoveBinding(BindableProperty) |
Rimuove un'associazione impostata in precedenza. |
SetBinding(BindableProperty, BindingBase) |
Assegna un'associazione a una proprietà. |
SetInheritedBindingContext(BindableObject, Object) |
Imposta il contesto ereditato su un elemento annidato. |
SetValue(BindableProperty, Object) |
Imposta il valore della proprietà specificata. |
SetValue(BindablePropertyKey, Object) |
Imposta il valore di propertyKey. |
SetValueCore(BindableProperty, Object, SetValueFlags) |
Per uso interno della piattaforma Xamarin.Forms. |
UnapplyBindings() |
Annulla tutte le associazioni impostate in precedenza. |
Eventi
BindingContextChanged |
Si verifica ogni volta che la proprietà BindingContext cambia. |
PropertyChanged |
Viene chiamato quando una proprietà è stata modificata. |
PropertyChanging |
Viene chiamato quando una proprietà sta per essere modificata. |
Implementazioni dell'interfaccia esplicita
IDynamicResourceHandler.SetDynamicResource(BindableProperty, String) |
Per uso interno della piattaforma Xamarin.Forms. |
Metodi di estensione
GetPropertyIfSet<T>(BindableObject, BindableProperty, T) |
Specifica un meccanismo con il quale gli sviluppatori di applicazioni possono propagare le modifiche apportate ai dati di un oggetto in un altro oggetto, abilitando la convalida, la coercizione del tipo e un sistema di eventi. BindableProperty. |
SetAppThemeColor(BindableObject, BindableProperty, Color, Color) |
Specifica un meccanismo con il quale gli sviluppatori di applicazioni possono propagare le modifiche apportate ai dati di un oggetto in un altro oggetto, abilitando la convalida, la coercizione del tipo e un sistema di eventi. BindableProperty. |
SetBinding(BindableObject, BindableProperty, String, BindingMode, IValueConverter, String) |
Crea un'associazione e la applica a una proprietà. |
SetBinding<TSource>(BindableObject, BindableProperty, Expression<Func<TSource,Object>>, BindingMode, IValueConverter, String) |
Obsoleti.
Crea e applica un'associazione da un'espressione. |
SetOnAppTheme<T>(BindableObject, BindableProperty, T, T) |
Specifica un meccanismo con il quale gli sviluppatori di applicazioni possono propagare le modifiche apportate ai dati di un oggetto in un altro oggetto, abilitando la convalida, la coercizione del tipo e un sistema di eventi. BindableProperty. |