【问题标题】:.NET MAUI : Override the default style of a windows view (TextBox).NET MAUI:覆盖窗口视图(文本框)的默认样式
【发布时间】:2023-01-06 21:52:07
【问题描述】:

我想创建自定义入口具有完全个性化的视觉效果。

为此,我创建了一个自定义条目处理程序修改 Windows 平台的本机视图,但我无法覆盖导入某些效果的基本 Windows 样式:

  • 结束时改变的背景颜色
  • 获得焦点时显示的底部边框
  • ...

我想我明白了,这种风格来自 windows 的默认风格,在 generic.xaml 文件中。
有谁知道我怎么能覆盖这个?

        protected  override TextBox CreatePlatformView()
    {
        var nativeView = new TextBox();

        nativeView.Margin = new Microsoft.UI.Xaml.Thickness(0, 0, 0, 0);
        nativeView.FocusVisualMargin = new Microsoft.UI.Xaml.Thickness(0, 0, 0, 0);
        nativeView.BorderThickness = new Microsoft.UI.Xaml.Thickness(0,0,0,0);
        nativeView.Padding = new Microsoft.UI.Xaml.Thickness(0, 0, 0, 0);
        nativeView.CornerRadius = new Microsoft.UI.Xaml.CornerRadius(0);
        nativeView.Background = new SolidColorBrush(Colors.Transparent);

        return nativeView;
    }

Screenshot of the entry focused with code above


22 年 11 月 10 日更新: 我也想删除清除文本框的按钮。

提前致谢。

【问题讨论】:

  • TextBox 的“鼠标悬停时的视觉效果”是什么意思?
  • 你好@Cfun,我编辑了我的帖子,我希望能回答你的问题。谢谢
  • 可以用 XAML 编码吗?
  • 是的,我试过没有成功。

标签: xaml xamarin .net-maui winui


【解决方案1】:

最简单的方法是编写一个新的 Style 并使用以下代码将其应用于您的控件:

var nativeView = new TextBox();
nativeView.Style = Application.Current.Resources["MyCustomTextBoxStyle"];

在您的 App.xaml 中,您需要添加以下样式:

<Style x:Key="MyCustomTextBoxStyle" TargetType="TextBox">
<!-- Your textbox style -->
</Style>

您可以找到标准的 WinUI 2 TextBox 样式here。如果您想删除清除按钮,您可以删除属于 TextBoxStyle here 的按钮。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-04
    • 2015-03-09
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多