В настоящее время я пытаюсь разработать приложение на основе страницы с вкладками Xamarin Forms. Сначала в приложении была только одна страница содержимого, написанная на C#. Что я хочу сделать сейчас, так это внедрить эту существующую страницу содержимого в одну из вкладок страницы с вкладками.
Я пишу страницу с вкладками в XAML и не знаю, как выполнить «SetBinding» или «BindingContext» на этом языке.
Вот что я хочу перевести с C# на XAML:
public MyPage()
{
this.BindingContext = new MyPageViewModel();
Picker pickerBluetoothDevices = new Picker() { Title = "Select a bth device" };
pickerBluetoothDevices.SetBinding(Picker.ItemsSourceProperty, "ListOfDevices");
pickerBluetoothDevices.SetBinding(Picker.SelectedItemProperty, "SelectedBthDevice");
pickerBluetoothDevices.SetBinding(VisualElement.IsEnabledProperty, "IsPickerEnabled");
Entry entrySleepTime = new Entry() {Keyboard = Keyboard.Numeric, Placeholder = "Sleep time" };
entrySleepTime.SetBinding(Entry.TextProperty, "SleepTime");
Button buttonConnect = new Button() { Text = "Connect" };
buttonConnect.SetBinding(Button.CommandProperty, "ConnectCommand");
buttonConnect.SetBinding(VisualElement.IsEnabledProperty, "IsConnectEnabled");
Button buttonDisconnect = new Button() { Text = "Disconnect" };
buttonDisconnect.SetBinding(Button.CommandProperty, "DisconnectCommand");
buttonDisconnect.SetBinding(VisualElement.IsEnabledProperty, "IsDisconnectEnabled");
Button buttonSend = new Button() { Text = "Send" };
buttonSend.SetBinding(Button.CommandProperty, "SendCommand");
buttonSend.SetBinding(VisualElement.IsEnabledProperty, "IsSendEnabled");
StackLayout slButtons = new StackLayout() {Orientation = StackOrientation.Horizontal, Children = {buttonDisconnect, buttonConnect, buttonSend } };
ListView lv = new ListView();
lv.SetBinding(ListView.ItemsSourceProperty, "ListOfBarcodes");
lv.ItemTemplate = new DataTemplate(typeof(TextCell));
lv.ItemTemplate.SetBinding(TextCell.TextProperty, ".");
int topPadding = 0;
if (Device.RuntimePlatform == Device.iOS)
topPadding = 20;
StackLayout sl = new StackLayout { Children = { pickerBluetoothDevices, entrySleepTime, slButtons, lv }, Padding = new Thickness(0,topPadding,0,0) };
Content = sl;
}
Что было бы эквивалентно этому коду C# в XAML?
Я начал с чего-то вроде этого:
<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TestBth.MyTabbedPage">
<!--Pages can be added as references or inline-->
<ContentPage Title="Connect">
<ContentPage.Content>
<StackLayout VerticalOptions="Center" HorizontalOptions="Center">
<Picker x:Name="pickerBluetoothDevices" Title="Select a bth device"/>
<Button x:Name="buttonConnect" Text="Connect"/>
<Button x:Name="buttonDisconnect" Text="Disconnect"/>
<Button x:Name="buttonSend" Text="Send"/>
<ListView x:Name="lv"/>
</StackLayout>
</ContentPage.Content>
</ContentPage>