2012-10-24 108 views
0

我有一个充当视图视图模型的类。该类有一个ImageSource类型的公共成员。现在我需要的是将属性类型更改为uri(或字符串)。 但问题是我无法找到一种方法来从资源dicionary与URI访问单个资源。URI和xaml中的资源

例如此刻我在做某事像这样:

VectorResourcesDictionary = new ResourceDictionary(); 
Uri uri = new Uri("pack://application:,,,/assembly;component/IconResources.xaml", UriKind.Absolute); 
VectorResourcesDictionary.Source = uri; 
object rawResource = VectorResourcesDictionary["VectorIcon.LeftArrowIcon"]; 
return pickerSymbol = rawResource as ImageSource; 

现在,我怎样才能使用URI代替的ImageSource的类似的结果?

+1

我的事情你做错了MVVM。与UI相关的图像,样式等应该属于View not ViewModel。我建议你将它移动到视图(xaml文件)。 – Ekk

+0

是的,我知道它错了,这就是为什么我必须将ImageSource(ui元素)更改为简单的字符串或URI。问题是如何使用URI获得在xaml中定义的简单资源... –

回答

0

很简单,只是改变从ImageSource的属性类型的URI:

public Uri PickerSymbol // i just guess the property name 
{ 
    get 
    { 
     // get resource as string instead of ImageSource 
     ... 
     string uri = rawResource as string 
     return new Uri(uri); 
    } 
} 

您认为保持绑定到PickerSymbol财产,开放的我们将被自动转换为ImageSource的。

<Image Source="{Binding PickerSymbol}" />