Xamarin.Forms
Benutzerdefinierte Steuerelemente erstellen
Suche…
Benutzerdefinierte Schaltfläche erstellen
/// <summary>
/// Button with some additional options
/// </summary>
public class TurboButton : Button
{
public static readonly BindableProperty StringDataProperty = BindableProperty.Create(
propertyName: "StringData",
returnType: typeof(string),
declaringType: typeof(ButtonWithStorage),
defaultValue: default(string));
public static readonly BindableProperty IntDataProperty = BindableProperty.Create(
propertyName: "IntData",
returnType: typeof(int),
declaringType: typeof(ButtonWithStorage),
defaultValue: default(int));
/// <summary>
/// You can put here some string data
/// </summary>
public string StringData
{
get { return (string)GetValue(StringDataProperty); }
set { SetValue(StringDataProperty, value); }
}
/// <summary>
/// You can put here some int data
/// </summary>
public int IntData
{
get { return (int)GetValue(IntDataProperty); }
set { SetValue(IntDataProperty, value); }
}
public TurboButton()
{
PropertyChanged += CheckIfPropertyLoaded;
}
/// <summary>
/// Called when one of properties is changed
/// </summary>
private void CheckIfPropertyLoaded(object sender, PropertyChangedEventArgs e)
{
//example of using PropertyChanged
if(e.PropertyName == "IntData")
{
//IntData is now changed, you can operate on updated value
}
}
}
Verwendung in XAML:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SomeApp.Pages.SomeFolder.Example"
xmlns:customControls="clr-namespace:SomeApp.CustomControls;assembly=SomeApp">
<StackLayout>
<customControls:TurboButton x:Name="exampleControl" IntData="2" StringData="Test" />
</StackLayout>
</ContentPage>
Jetzt können Sie Ihre Eigenschaften in c # verwenden:
exampleControl.IntData
Beachten Sie, dass Sie selbst angeben müssen, wo sich Ihre TurboButton-Klasse in Ihrem Projekt befindet. Ich habe es in dieser Zeile gemacht:
xmlns:customControls="clr-namespace:SomeApp.CustomControls;assembly=SomeApp"
Sie können "customControls" frei in einen anderen Namen ändern. Es liegt an Ihnen, wie Sie es nennen werden.
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow