Как я могу добавить метку в C # к сетке в моем коде XAML? - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть этот шаблон:

<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             x:Class="Japanese.Templates.PointReductionModeTemplate" x:Name="this">
    <StackLayout BackgroundColor="#FFFFFF" Padding="20,0" HeightRequest="49" Margin="0">
        <Grid VerticalOptions="CenterAndExpand" x:Name="ABC">

        </Grid>
    </StackLayout>
</ContentView>

Как я могу добавить этот ярлык к сетке в C # с этим текстом и стилем?Обратите внимание, что я хочу иметь возможность ссылаться на Source={x:Reference this} также

<Label Text="{Binding Text, Source={x:Reference this}}" Style="{StaticResource LabelText}" />

Ответы [ 3 ]

0 голосов
/ 22 сентября 2018

Вы можете попробовать это

Grid grid = new Grid();
grid.SetBinding(Grid.BindingContextProperty, "Source");

Label label = new Label();
label.SetBinding(Label.TextProperty,FieldName);
Resources.Add ("label", customButtonStyle);
grid.Children.Add(label)

Для добавления Label в Grid укажите предпочитаемую позицию.Просто пример кода, чтобы установить привязки на Label программно

label.BindingContext = list; // The observablecollection
label.SetBinding(Label.TextProperty, "Count");

Стили программно & Программирование привязки

Надеюсь, это поможет вам.

0 голосов
/ 22 сентября 2018

Вы можете использовать SetBinding() для создания привязки при использовании parent (this) в качестве источника привязки.Явное указание параметра источника говорит Binding, что нужно ссылаться на этот экземпляр как Source.

//<Label Text="{Binding Text, Source={x:Reference this}}" ...
var label = new Label();
label.SetBinding(Label.TextProperty, new Binding(nameof(Text), source: this));

Теперь динамическая установка Style из ресурсов не так проста.Когда мы используем расширение StaticResource в XAML, необходимо пройтись по визуальному дереву, чтобы найти соответствующий ресурс (стиль).В коде позади вам нужно будет вручную определить точный словарь ресурсов, стиль которого определен в.

Таким образом, предполагая, что у вас есть 'LabelText', определенный в App.xaml - вы можете использовать следующий код:

//... Style="{StaticResource LabelText}" />
//if the style has been defined in the App resources
var resourceKey = "LabelText";

// resource-dictionary that has the style
var resources = Application.Current.Resources;

if (resources.TryGetValue(resourceKey, out object resource))
    label.Style = resource as Style;

Если стиль определен в PointReductionModeTemplate.xaml (или ContentView ресурсах), вы можете альтернативно использовать:

var resources = this.Resources;
if (resources.TryGetValue(resourceKey, out object resource))
    label.Style = resource as Style;

И, наконец, добавить метку в сетку.

this.ABC.Children.Add(label);
0 голосов
/ 22 сентября 2018

Вы должны создать объект класса метки, а затем добавить этот объект в свойство Chidlers вашей сетки.

Label dynamicLabel = new Label();

dynamicLabel.Name = "NewLabel";
dynamicLabel.Content = "TEST";
dynamicLabel.Width = 240;
dynamicLabel.Height = 30;
dynamicLabel.Margin = new Thickness(0, 21, 0, 0);
dynamicLabel.Foreground = new SolidColorBrush(Colors.White);
dynamicLabel.Background = new SolidColorBrush(Colors.Black);

Grid.SetRow(dynamicLabel, 1);
Grid.SetColumn(dynamicLabel, 0);

gride.Children.Add(dynamicLabel);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...