ссылаться на двойной ресурс внутри другого двойного ресурса - PullRequest
2 голосов
/ 09 января 2011

Я бы хотел сослаться на ресурс Double внутри другого ресурса Double, как то так:

<sys:Double x:Key="width">100</sys:Double>

<sys:Double x:Key="height">{StaticResource width}</sys:Double>

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 09 января 2011

Я сомневаюсь, что это возможно, вы ссылаетесь на атомарный тип данных, который не может содержать ничего, кроме числового значения, которое не является ни полем, ни свойством.Чтобы разрешить это, вам, вероятно, нужно создать свой собственный тип данных.

Редактировать: Обычно вы можете использовать DynamicResource для этого:

<DynamicResource x:Key="height" ResourceKey="width"/>

( Visual Studio это не понравится, но должно скомпилироваться и работать )

0 голосов
/ 09 января 2011

Ну, я не уверен, что приведенный вами пример может сработать, поскольку я не могу связать «sys: Double».

, но кроме этого, ответ наВы спрашиваете: вы можете использовать конвертер, и это довольно просто.добавьте этот класс:

class DoubleConvertor : IValueConverter
{

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

, а затем укажите ссылку на этот класс в xaml (сначала убедитесь, что вы используете xmlns вашего проекта):

<local:DoubleConvertor x:Key="DoubleConvertor" />

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

<UserControl Height="{Binding path={StaticResource width}, Converter={StaticResource DoubleConvertor} />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...