Xamarinフォーム(バージョン2.5.0.121934)を使用して、Android、iOS、およびUWPをターゲットとするアプリケーションを開発中です。カスタムレンダラーが必要なテキストに下線と取り消し線を追加する必要があります。 AndroidとiOSの場合、すべて正常に動作しており、UWPではにの取り消し線または下線が正しく適用されますが、これらの装飾は削除されません。ここでXamarinフォームのTextDecorationをクリアできませんUWPアプリケーション
はUWPレンダラーの全体です:
[assembly: ExportRenderer(typeof(EnhancedLabel), typeof(EnhancedLabelRenderer))]
namespace myApp.UWP
{
public class EnhancedLabelRenderer : LabelRenderer
{
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
var strikethrough = ((EnhancedLabel)sender).Strikethrough;
var underline = ((EnhancedLabel)sender).Underline;
if (strikethrough && underline)
{
Control.TextDecorations = TextDecorations.Strikethrough | TextDecorations.Underline;
}
else if (strikethrough)
{
Control.TextDecorations = TextDecorations.Strikethrough;
}
else if (underline)
{
Control.TextDecorations = TextDecorations.Underline;
}
else
{
Control.TextDecorations = TextDecorations.None;
}
}
}
}
EnhancedLabel
はXamarin.Forms.Label
を拡張し、取り消し線または下線を指定する簡単なBindableProperty
フィールドを追加する単純なクラスです。
レンダラーは正しくTextDecorations.None
に設定されていますが、UIには影響しません。私はデバッガでこれを処理しましたが、ExtendedLabel
内のTextBlock
の状態はTextDecorations.None
ですが、実際には下線付きまたは取り消し線付きでUIが描画されています(どちらも追加できますが、除去される)。
私はXamarinのドキュメントを読んで、Bugzillaのバグを見てきましたが、手がかりは見つかりませんでした。他に誰かがこれに遭遇しましたか? UWP特有のコールがあるかどうかわかりません。私が逃したことをする必要があります。あるいは、TextDecorations
を使用してスタイルを適用する方法が間違っている場合や、実際にバグを見つけた場合です。
友人は、https://stackoverflow.com/questions/16480344/programatically-removing-strikethrough-textdecoration-from-code-behind-in-wpfに私に指摘しました。 WPFのためにそこで働いたものは、UWPには適用されません。 – Ickster