Определить строку как статический ресурс - PullRequest
23 голосов
/ 14 апреля 2011

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

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

Ответы [ 5 ]

74 голосов
/ 14 апреля 2011

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

 <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>
6 голосов
/ 10 февраля 2016

Дополнение к ответу @FelicePollano, приведенному выше, - чтобы отступ для кода работал, я поместил это как отдельный «ответ».

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

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

Чтобы указанная выше ссылка "local" работала, вам необходимо включить пространство имен xmlns:local=”clr-namespace:Utils” в тег <Application>.

Тогда cs-класс может выглядеть так:

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

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

<TextBlock Text=”{StaticResource MyConstString}” />
6 голосов
/ 14 апреля 2011

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

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

ВВ конце ссылки на словарь во всех ваших элементах управления XAML:

<UserControl.Resources>
                <ResourceDictionary Source="Dictionary.xaml"/>
    </UserControl.Resources>
4 голосов
/ 14 апреля 2011

Я придерживался этого подхода, хотя в большинстве случаев сработали бы другие ответы:

Что означает "{x: Static}" в XAML?

1 голос
/ 19 августа 2016

Вы можете использовать это так:

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

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

И вторая XAML с использованием:

<TextBlock Text="{x:Static Member=Constants:ControlNames.WrapperGridName}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...