我想在资源文件中定义URI,并在 ApplicationBar 上使用它们。我把它作为以下问题的第一个答案:
喜欢:
<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类的解决方案,请参阅以下问题的最后一个答案:
Is it possible to supply a type converter for a static resource in 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上使用,以及如何实现它,有人可以给我一些提示或示例吗?或帮我修复第一个解决方案。 提前致谢。
答案 0 :(得分:0)
使用datatemplate可能会发现您的问题。
答案 1 :(得分:0)
您不希望在XAML中执行此操作,因为ApplicationBar不支持数据绑定。
相反,您应该使用C#创建ApplicationBar,这也为您提供了进行本地化的能力。
至于定义URL,我建议您使用.NET资源文件,或者定义带有导航URL的静态类。首先将URL定义为资源的唯一原因是因为您打算重新使用它,因此,您可能还需要从C#访问它,因此资源文件的原因是最佳解决方案。
Here's an example of how to build a ApplicationBar in C#。它还允许您添加更多功能,例如透明度切换。