天天看點

WPF XAML 如何Binding靜态類資源方法 一 :通過{Binding MailPattern , Source={x:Static controls:RegexPatterns.Instance}}方法 二 (遇到再補充)

WPF XAML 如何 Binding 靜态類資源

  • 方法 一 :通過{Binding MailPattern , Source={x:Static controls:RegexPatterns.Instance}}
  • 方法 二 (遇到再補充)

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的靜态對象。

方法 二 (遇到再補充)