Использование системных типов в XAML в качестве ресурсов

Я столкнулся с ситуацией, когда было бы очень полезно указать значение с плавающей запятой непосредственно в XAML и использовать его в качестве ресурса для нескольких частей моего пользовательского интерфейса. После поиска я нашел достаточно информации о том, как включить правильную сборку (mscorlib) в ваш XAML, чтобы вы могли это сделать.

К сожалению, я получаю исключение в одном случае, когда я пытаюсь это сделать. Вот следующий код XAML, воссоздающий ситуацию:

<Window x:Class="davidtestapp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:core="clr-namespace:System;assembly=mscorlib"
    Title="MainWindow" Height="350" Width="525">

<Window.Resources>
    <core:Double x:Key="MyDouble">120</core:Double>
</Window.Resources>

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="{StaticResource MyDouble}" />
        <ColumnDefinition Width="40" />
        <ColumnDefinition Width="40" />
    </Grid.ColumnDefinitions>

    <Rectangle Grid.Column="0" Fill="Red" />
    <Rectangle Grid.Column="1" Fill="Green" />
    <Rectangle Grid.Column="2" Fill="Blue" />

</Grid>
</Window>

Когда я пытаюсь скомпилировать и запустить это, я получаю исключение XamlParseException, которое говорит, что «120 не является допустимым значением для свойства Width».

Но свойство «Ширина» является двойным, так почему можно? t Я установил его с помощью StaticResource, который был определен? Кто-нибудь знает, как это сделать?

19
задан David 9 September 2010 в 20:02
поделиться