Вставить System.String в XAML
Есть ли способ вставить строку в XAML, дать ей и идентификатор и обратиться к ней позже.
Я пробовал:
<Window x:Class="WpfApp1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib"
Title="Window1" Height="300" Width="500">
<Grid>
<System:String>Test</System:String>
</Grid>
</Window>
И получите ошибку:
Невозможно добавить экземпляр типа "String" в коллекцию типа "UIElementCollection". Разрешены только элементы типа "UIElement".
Могу ли я сделать это, если бы я вложил String в другое место в XAML? или внутри элемента без интерфейса? Тогда я просто даю ему атрибут Name?
Ответы
Ответ 1
Вы должны использовать Window.Resources
Здесь пример страницы, в вашем случае это будет тег Window.Resources
:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib">
<Page.Resources>
<System:String x:Key="MyString">Hello</System:String>
</Page.Resources>
<Grid>
<TextBlock Text="{StaticResource MyString}"></TextBlock>
</Grid>
</Page>
Ответ 2
В теге Application вам необходимо включить следующее:
xmlns:system="clr-namespace:System;assembly=mscorlib">
без вышеуказанного кода, Visual Studio будет жаловаться на недостающую ссылку на сборку.
Ответ 3
Наличие ссылки на строку не позволит вам изменить ее позже, так как строки неизменяемы, как предлагает Yacoder, просто поместите ее в раздел <Window.Resources>
. Что-то вроде:
<Window.Resources>
<System:String x:Key="TestString">Test</System:String>
</Window.Resources>
Если вам нужно изменить значение строки, которая появляется в вашей сетке, вам нужно будет использовать TextBlock или другой элемент управления, свойство содержимого которого можно установить.