我有一个Windows Phone 7应用程序,我正在尝试将一些常见元素移动到资源文件中。
文字和样式工作正常,但我很难找到划分Uri的正确方法。
这是我试图开始工作的代码示例。
<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
<shell:ApplicationBarIconButton IconUri="{StaticResource MenuButton1}" Text="Button1"/>
<shell:ApplicationBarIconButton IconUri="{StaticResource MenuButton2}" Text="Button2"/>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>
我制作了一个AppImages.xaml文件,这里是代码;
<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=mscorlib">
<sys:String x:Key="MenuButton1">/Images/button1.png</sys:String>
<sys:String x:Key="MenuButton2">/Images/button2.png</sys:String>
</ResourceDictionary>
很明显,我不能只使用字符串,但我不知道应该使用什么。
我是WP7开发的新手,所以如果我做了明显错误的事情,请告诉我。
谢谢, 麦克
答案 0 :(得分:1)
如果不进行测试,我猜你会尝试将字符串用于带URI的参数。您可以尝试添加转换器以使其成为正确的类型。该框架通常会自动进行转换。
调试输出是否显示任何(绑定)错误?
您可以创建一个为每个URI公开静态属性的类,而不是以这种方式定义资源。请参阅我的博客上的示例:http://blog.mrlacey.co.uk/2011/03/binding-to-static-classes-in-windows.html
答案 1 :(得分:1)
您可以尝试将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>
注意assembly=System
命名空间声明中的xmlns:sys
。此外,当您在Visual Studio编辑器中键入<sys:
时,Uri
将不会显示在IntelliSense列表中,但在XAML中使用它似乎完全没问题。