WP7 Uri как статический ресурс? - PullRequest
0 голосов
/ 10 декабря 2011

Я хочу определить URI в файлах ресурсов и использовать их на ApplicationBar . Я сделал это как первый ответ на следующий вопрос:

URI изображения WP7 как StaticResource

любит:

    <ResourceDictionary
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=System">

        <sys:Uri x:Key="MenuButton1">/Images/button1.png</sys:Uri>
        <sys:Uri x:Key="MenuButton2">/Images/button2.png</sys:Uri>
    </ResourceDictionary>

Но у меня это не работает, файл xaml не может быть проанализирован.

А потом я нашел другое решение, расширяющее класс StaticResourceExtension, см. Последний ответ на следующий вопрос:

Возможно ли предоставить преобразователь типа для статического ресурса в WPF?

любит:

public class MyStaticResourceExtension : StaticResourceExtension
{
    public IValueConverter Converter { get; set; }
    public object ConverterParameter { get; set; }

    public MyStaticResourceExtension()
    {
    }

    public MyStaticResourceExtension(object resourceKey)
        : base(resourceKey)
    {
    }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        object value = base.ProvideValue(serviceProvider);
        if (Converter != null)
        {
            Type targetType = typeof(object);
            IProvideValueTarget target = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;
            if (target != null)
            {
                DependencyProperty dp = target.TargetProperty as DependencyProperty;
                if (dp != null)
                {
                    targetType = dp.PropertyType;
                }
                else
                {
                    PropertyInfo pi = target.TargetProperty as PropertyInfo;
                    if (pi != null)
                    {
                        targetType = pi.PropertyType;
                    }
                }
            }
            value = Converter.Convert(value, targetType, ConverterParameter, CultureInfo.CurrentCulture);
        }
        return value;
    }
}

Но я не знаю, можно ли его использовать на Windows Phone 7, и как это реализовать, может кто-нибудь дать мне несколько советов или пример? или помогите мне исправить первое решение. заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2011

Вы не хотите делать это в XAML, так как ApplicationBar не поддерживает привязку данных.

Вместо этого вы должны создать ApplicationBar с C #, который также предлагает вам возможность выполнять локализацию.,

Что касается определения URL-адресов, я рекомендую вам использовать файл ресурсов .NET или определить статический класс с URL-адресами навигации.Во-первых, единственной причиной для определения URL-адреса как ресурса является то, что вы намереваетесь использовать его повторно, и поэтому вам, вероятно, также потребуется доступ к нему из C #, поэтому файл ресурсов будетоптимальное решение.

Вот пример того, как построить ApplicationBar в C # .Это также позволяет вам добавлять больше функций, таких как переключение прозрачности.

0 голосов
/ 11 декабря 2011

с использованием таблицы данных может выяснить вашу проблему.

...