Ich habe eine große UserControl
und für die Testzwecke erstellt, ich habe die BindingContext = this
gesetzt hatte. Jetzt brauche ich eine BindableProperty
, also kann ich diesen Trick nicht mehr verwenden, also wie kann ich es so einstellen, dass es sich selbst widerspiegelt?
Das Problem ist, dass ich das Usercontrol in XAML verwenden, und dann sagen, das Element für SelectedDate binded nicht vorhanden ist, wenn ich BindingContext = this
gesetzt.Usercontrol selbst Bindung
Die UserControl
ist so komplex, dass die einzige Sache, die ich in XAML definieren kann, ist die Haupt wie
<?xml version="1.0" encoding="UTF-8"?>
<Grid xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="ComplexUserControl" />
Was ich
gehen nicht den richtigen Weg finden Ich habe eine einfache erstellt Usercontrol, so können Sie sehen, was ich versuche,
class Test : Grid
{
public static readonly BindableProperty SelectedDateProperty = BindableProperty.Create("SelectedDate", typeof(DateTime), typeof(Test), defaultValue: DateTime.Now, defaultBindingMode: BindingMode.TwoWay);
public DateTime Date1
{
get { return DateTime.Today.AddDays(-1); }
}
public DateTime Date2
{
get { return DateTime.Today; }
}
public DateTime Date3
{
get { return DateTime.Today.AddDays(1); }
}
public Test()
{
InitializeComponent();
}
private void InitializeComponent()
{
ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
Button btn1 = new Button();
btn1.SetBinding(Button.FontSizeProperty, new Binding("SelectedDate", converter: new IsSelectedFontSizeConverter(), converterParameter: Date1));
btn1.SetBinding(Button.TextProperty, new Binding("Date1", stringFormat: "dd"));
Children.Add(btn1, 0, 0);
Button btn2 = new Button();
btn2.SetBinding(Button.FontSizeProperty, new Binding("SelectedDate", converter: new IsSelectedFontSizeConverter(), converterParameter: Date2));
btn2.SetBinding(Button.TextProperty, new Binding("Date2", stringFormat: "dd"));
Children.Add(btn2, 1, 0);
Button btn3 = new Button();
btn3.SetBinding(Button.FontSizeProperty, new Binding("SelectedDate", converter: new IsSelectedFontSizeConverter(), converterParameter: Date3));
btn3.SetBinding(Button.TextProperty, new Binding("Date3", stringFormat: "dd"));
Children.Add(btn3, 2, 0);
}
}
Es ist möglich, wird zu tun, von außen die SelectedDate auf ein anderes Datum zu setzen.
Wie kann ich die 'testcontrol' in C# -Code festlegen? Wie kann ich das UserControl in XAML nicht erstellen (zu viel Berechnung wird in dem UserControl in XAML ausgeführt)? –
Sie müssen x: name = "testControl" Ihres Controls setzen. Erstellen Sie die test.xaml-Seite.
Wie ich sehe, können Sie es nur in Xaml tun –