Как я могу сделать Label текстовому Подчеркивание в WinPhone с использованием Xamarin Forms?Xamarin Forms WinPhone - Как сделать текст ярлыка Подчеркнутый WinPhone?
ответ
Попробуйте использовать следующие xaml;
<StackLayout Orientation="Vertical">
<Label Text="SomeText"/>
<BoxView HeightRequest="1" HorizontalOptions="FillAndExpand" BackgroundColor="Black"/>
</StackLayout>
Это должно быть сделано для всех трех платформ. :)
Это просто рисует окно с высотой 1 и не имеет ничего общего с подчеркиванием. Это сломается, если текст ярлыка короче или вы указываете выравнивание и когда он переходит в 2 строки. –
У меня такая же реализация с триггером данных по длине текста, и это дает мне запись в конструкцию материала Google. Я доволен этим до сих пор. :) –
Как сказал @RohitVipinMathews, это действительно просто хакерское решение и потенциально может иметь проблемы. – jbyrd
Я думаю, вам нужно создать пользовательский вид для этого как Layout/Grid, который имеет ярлык и BoxView с небольшим heightRequest под меткой, чтобы действовать как строка.
Да, я могу Найти другое решение –
У вас есть верхний создать новый элемент управления в вашем PCL/совместном проекте, наследующем от Label.
public class Exlabel : Label
{
}
В ваших окнах телефон проект создания Custom Renderer для него следующим образом и использовать TextBlock.TextDecorations свойство установить подчеркивание. Метка отображается как TextBlock в окнах.
Sample (непроверенных):
[assembly: ExportRenderer(typeof(Exlabel), typeof(ExlabelRenderer))]
namespace CustomRenderer.WinPhone81
{
public class ExlabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.TextDecorations = TextDecorations.UnderLine;
}
}
}
}
Если вы используете Windows Phone проверить этот образец - How to format texts of TextBlock using xaml in Windows Phone.
Для WinRT вы можете использовать это - TextBlock underline in WinRT.
В SilverLight WinPhone (старый и не поддерживаемый шаблон) вы также можете использовать Margin для достижения того, что вам нужно, подобно How to make an underlined input text field in Windows Phone?.
Я не могу найти это свойство! У меня есть эта ошибка: Ошибка \t CS1061 \t «TextBlock» не содержит определения для «TextDecorations» и никакого метода расширения «TextDecorations», принимающий первый аргумент типа «TextBlock», может быть найден (вам не хватает директивы using или сборка?) –
Каков тип, который вы получаете для 'Control' в проекте телефона Windows? –
'TextBlock', вы можете увидеть это в своем сообщении об ошибке –
Создать ярлык визуализатор в вашем WinPhone проекте:
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Documents;
[assembly: ExportRenderer(typeof(ExtendedLabel), typeof(ExtendedLabelRenderer))]
namespace SampleProject.WinPhone
{
public class ExtendedLabelRenderer: LabelRenderer
{
ExtendedLabel element;
TextBlock control;
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if((ExtendedLabel)Element == null || Control == null)
return;
element = (ExtendedLabel)Element;
control = Control;
UnderlineText();
}
void UnderlineText()
{
control.Text = string.Empty;
Underline ul = new Underline();
Run run = new Run();
run.Text = element.Text;
ul.Inlines.Add(run);
control.Inlines.Add(ul);
}
}
}
Создание визуализации для 'label' и использовать родной ** WinPhone ** подход к созданию подчеркнутый текст. –
Вы видели [это] (https://github.com/XLabs/Xamarin-Forms-Labs/wiki/ExtendedLabel) образец? –
Да @EgorGromadskiy, но я не могу найти ** ExtendedLabelRenderer ** для WinPhone в этом [github repo] (https://github.com/XLabs/Xamarin-Forms-Labs/wiki/ExtendedLabel#platform-code) –