Xamarin.Forms TextBlock внутри кнопки. Индивидуальная упаковка текста - PullRequest
1 голос
/ 02 февраля 2020

Xamarin. Формы 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="SaleAgent.MainPage"
Title = "Торговый агент">
    <ContentPage.Resources>

        <Style x:Key="buttonStyle" TargetType="{x:Type Button}">
            <Setter Property="FontSize" Value="Small" />

            <Setter Property="Template">
                    <Setter.Value>
                    <TextBlock></TextBlock> 
                    </Setter.Value>
                </Setter>

        </Style>
    </ContentPage.Resources>
    <ContentPage.Content>
        <Grid x:Name="mainGrid" RowSpacing="1" ColumnSpacing="1">
        <Grid.RowDefinitions>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
        </Grid.ColumnDefinitions>
            <Button Grid.Row="1" Grid.Column="1" Grid.RowSpan="3" Style="{StaticResource buttonStyle}"/>  
        </Grid>
    </ContentPage.Content>
</ContentPage>

Но TextBlock выдает мне ошибку:

XLS0414 Тип 'TextBlock' не найден. Убедитесь, что вы не пропустили ссылку на сборку и что все сборки, на которые имеются ссылки, были построены

Ответы [ 3 ]

2 голосов
/ 02 февраля 2020

Вы используете WPF / UWP XAML. Это не поддерживается в Xamarin. Здесь нет смысла отвечать на различия между ними, и вы должны изучить их.

Но чтобы ответить на ваш вопрос (и это не единственная проблема в коде выше), TextBlock не существует в Xamarin, но лейбл. Но только это не поможет вам работать, поскольку полная логика c, использованная выше, имеет недостатки.

0 голосов
/ 05 февраля 2020

Более просто, чем я думал. Текст должен быть задан в файле CS, а не в XAML. Пример: До Контрагент - ы После Контрагент - генты. Есть код:

`

public MainPage()
        {
            InitializeComponent();
            ButtonContragent.Text = "Контра\nгенты";
        }

`

В XAML я не мог использовать \ n оператор

0 голосов
/ 03 февраля 2020

Нет Template API или любого другого API (Документы по API кнопок) , чтобы добавить пользовательский вид на кнопку в Xamarin, как указал Иавн. И TextBlock не существует в Xamarin.

Поскольку вы добавляете только TextBlock, рассмотрите Text API Button.

<Button
    Text="The Text you want"
    FontSize="Small"/>

Для использования пользовательского вида в качестве кнопки Вы можете использовать TapGestureRecogniser. TapGesture можно добавить к любому представлению в Xamarin.

    <Label
        Text="Some text">
        <Label.GestureRecognizers>
            <TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped"/>
        </Label.GestureRecognizers>
    </Label>
...