0

リソースファイルでURIを定義し、それらをApplicationBarで使用したいと思います。私は次の質問の最初の答えとしてそれをしました:

StaticResourceとしてのWP7イメージURI

好きなもの:

    <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で使用できるかどうか、そしてそれを実装する方法がわかりません。誰かが私にいくつかのヒントや例を教えてもらえますか?または私が最初の解決策を修正するのを手伝ってください。前もって感謝します。

4

2 に答える 2

0

ApplicationBarはデータバインディングをサポートしていないため、XAMLでこれを行う必要はありません。

代わりに、C#を使用してApplicationBarを作成する必要があります。これにより、ローカリゼーションを実行することもできます。

URLの定義については、.NETリソースファイルを使用するか、ナビゲーションURLを使用して静的クラスを定義することをお勧めします。そもそもURLをリソースとして定義する唯一の理由は、URLを再利用するつもりであるためです。そのため、C#からもアクセスする必要がある可能性が高いため、リソースファイルは次のようになります。最適なソリューション。

これは、C#でApplicationBarを構築する方法の例です。また、透明度の切り替えなどの機能を追加することもできます。

于 2011-12-11T16:22:29.293 に答える
0

データテンプレートを使用すると、問題が解決する場合があります。

于 2011-12-11T04:50:32.403 に答える