Определить строку как статический ресурс
Есть ли способ определить константную строку, которая будет использоваться как статический ресурс для всего приложения?
Я запускаю приложение Wpf, но нет основной формы xaml. Приложение представляет собой набор элементов управления xaml, обрабатываемых одной классической формой .cs.
Ответы
Ответ 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>
Ответ 3
Я пошел на этот подход, хотя другие ответы будут работать в большинстве случаев:
Что такое "{x: Static}" означает в XAML?
Ответ 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}"