Подтвердить что ты не робот

Определить строку как статический ресурс

Есть ли способ определить константную строку, которая будет использоваться как статический ресурс для всего приложения?

Я запускаю приложение Wpf, но нет основной формы xaml. Приложение представляет собой набор элементов управления xaml, обрабатываемых одной классической формой .cs.

4b9b3361

Ответ 1

Просто добавьте ресурс словаря XAML файла, скажем, с именем Dictionary.xaml (Visual Studio может создать вас автоматически)

Затем добавьте свой статический ресурс в этот словарь.

Чтобы закончить, ссылайтесь на словарь во всех элементах управления XAML:

<UserControl.Resources>
                <ResourceDictionary Source="Dictionary.xaml"/>
    </UserControl.Resources>

Ответ 2

Вы можете определить его как ресурс приложения:

 <Application x:Class="xxxxxx"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:clr="clr-namespace:System;assembly=mscorlib"
                 StartupUri="MainWindow.xaml">
        <Application.Resources>
            <clr:String x:Key="MyConstString">My string</clr:String>
        </Application.Resources>
    </Application>

Ответ 4

Дополняющий ответ by @FelicePollano выше - для ввода кода в работу я помещал это как отдельный "ответ".

Если у вас есть исходная константа, определенная в .cs файле, вы можете избежать дублирования ее значения в <Application.Resources> следующим образом:

<x:Static x:Key="MyConstString" Member=local:Constants.MyString />

Для ссылки "local above to work" вам нужно включить пространство имен xmlns:local="clr-namespace:Utils" в тег <Application>.

Класс cs может выглядеть следующим образом:

namespace Utils 
{
    public class Constants
    {
        public const string MyString = "My string";
    }
}

Примером использования в xaml-коде может быть:

<TextBlock Text="{StaticResource MyConstString}" />

Ответ 5

Вы можете использовать следующее:

Во-первых, образец постоянной переменной:

namespace Constants
{
    public class ControlNames
    {
        public const string WrapperGridName = "WrapperGrid";
    }
}

И второй XAML, используя:

<TextBlock Text="{x:Static Member=Constants:ControlNames.WrapperGridName}"