Как определить и использовать простой ресурс в XAML? - PullRequest
0 голосов
/ 30 марта 2012

Я НОВЫЙ для WPF. У меня есть следующий код XAML:

</Window>
        ...
    <Canvas>
        <TextBlock Canvas.Left="300" Canvas.Top="300">WORD1</TextBlock>
        <TextBlock Canvas.Left="350" Canvas.Top="300">WORD2</TextBlock>
        <TextBlock Canvas.Left="400" Canvas.Top="300">WORD3</TextBlock>
    </Canvas>
</Window>

Я хотел бы определить «300» как ресурс (скажем, «myTop») и заменить все Canvas.Top = «300» на Canvas.Top = «myTop».

Как я могу сделать это в WPF / XAML? Я посмотрел на StaticResources и DataTemplates, но не смог найти простой способ. Спасибо.

Ответы [ 3 ]

3 голосов
/ 30 марта 2012

Прежде всего вы должны добавить xmlns в окно

xmlns:System="clr-namespace:System;assembly=mscorlib"

А затем определить ресурс как этот

<Window.Resources>
    <System:Double x:Key="theTop">300</System:Double>
</Window.Resources>

И тогда вы можете использовать его:

<Canvas>
  <TextBlock Canvas.Left="300" Canvas.Top="{StaticResource theTop}">WORD1</TextBlock>
</Canvas>
2 голосов
/ 30 марта 2012

Это немного сложнее, чем вы думаете, потому что вы, по сути, хотите определить «константу» типа System.Double для ссылки позже.

Чтобы перейти к этому типу, вам понадобитсячтобы использовать System пространство имен из mscorlib.dll в вашем XAML, поэтому добавьте эту строку в начало вашего файла под другими объявлениями пространства имен:

xmlns:s="clr-namespace:System;assembly=mscorlib"

Теперь мы можем использовать это пространство имен XML для определения нашегоресурс:

<Canvas>
    <Canvas.Resources>
        <s:Double x:Key="foo">300</s:Double>
    </Canvas.Resources>

... и ссылаться на него из текстовых блоков:

    <TextBlock Canvas.Left="300" Canvas.Top="{StaticResource foo}">WORD1</TextBlock>
    <TextBlock Canvas.Left="350" Canvas.Top="{StaticResource foo}">WORD2</TextBlock>
    <TextBlock Canvas.Left="400" Canvas.Top="{StaticResource foo}">WORD3</TextBlock>
</Canvas>
1 голос
/ 04 февраля 2015

В Windows Phone 8.1 тип должен быть базовым типом языка XAML, и к нему можно получить доступ следующим образом:

...
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
...

<Page.Resources>
    <x:Double x:Key="theTop">300</System:Double>
</Page.Resources>

См. Здесь: https://msdn.microsoft.com/en-us/library/hh771178.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...