WPF XAML 如何Binding静态类资源

11 篇文章 0 订阅

PS :一段时间不写WPF,有些技术都忘记具体怎么实现了。蛋疼啊。以后遇到一个技术就写下来吧。

方法 一 :通过{Binding MailPattern , Source={x:Static controls:RegexPatterns.Instance}}

1:先举例一个资源类RegexPatterns。

namespace DN.Controls.Util
{
    public sealed class RegexPatterns
    {
        private static RegexPatterns _instance;
        public static RegexPatterns Instance
        {
            get
            {
                if (_instance == null)
                    _instance = new RegexPatterns();
                return _instance;
            }
            protected set => _instance = value;
        }

        /// <summary>
        /// 邮件正则匹配表达式
        /// </summary>
        public string MailPattern { get; } =
            @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
    }
}

2:XAML 使用

<Grid x:Class="DN.ORM.Designer.ServerConfigForm"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:controls="http://schemas.denisvuyka.wordpress.com/DN.Controls"
      Margin="10">

    <Grid.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/DN.Controls;component/Themes/Styles/TextBox.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Grid.Resources>

    <Grid.RowDefinitions>
        <RowDefinition Height="30" />
    </Grid.RowDefinitions>
    <controls:MSTextBox Width="300"
                        controls:InfoElement.Necessary="True"
                        controls:InfoElement.Placeholder=""
                        controls:InfoElement.RegexPattern="{Binding MailPattern , Source={x:Static controls:RegexPatterns.Instance}}"
                        controls:InfoElement.Title="服务器IP"
                        controls:InfoElement.TitlePlacement="Left"
                        controls:InfoElement.TitleWidth="120"
                        ShowClearButton="True" />
</Grid>

观察下面这段代码:

"{Binding MailPattern , Source={x:Static controls:RegexPatterns.Instance}}"

其中

x:Static :引用的静态属性可用于在 XAML 中提供属性的值。

controls:指向 RegexPatterns类的域名空间。
[assembly: XmlnsDefinition(“http://schemas.denisvuyka.wordpress.com/DN.Controls”, “DN.Controls.Util”)]

RegexPatterns.Instance :RegexPatterns的静态对象。

方法 二 (遇到再补充)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Daniel大妞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值