XAML - Dynamics在BitmapIcon中设置UriSource

时间:2014-11-04 22:30:42

标签: c# xaml mvvm windows-phone-8.1 mvvm-light

我正在开发Windows Phone 8.1应用。如果我在BitmapIcon控件中设置UriSource,如:

<BitmapIcon Width="35" Height="35" Margin="0" RequestedTheme="Dark" UriSource="/Assets/Main/Operations/appbar.information.png">

一切正常,但如果我想设置它动态,我看到仍然是空场。

我正在使用MVVM Light。我的模型看起来像:

    ...
    private string _icon;
    public string Icon
    {
        get { return _icon; }
        set { _icon = value; RaisePropertyChanged("Icon"); }
    }
    ...

接下来,我创建对象,添加到列表,并在此基础上创建可观察的集合。其他字段正常工作,但不是这样:

<BitmapIcon Width="25" Height="25" Margin="0" UriSource="{Binding Icon, Mode=TwoWay}"/> 

1 个答案:

答案 0 :(得分:1)

BitmapIcon.UriSource的类型为Uri而不是string。你应该改用它:

private Uri _icon;
public Uri Icon
{
    get { return _icon; }
    set { _icon = value; RaisePropertyChanged("Icon"); }
}

然后在您的视图模型中,您可以设置如下图标:

Icon = new Uri("ms-appx:///Assets/Main/Operations/appbar.information.png");

This answer解释了为什么在XAML中使用字符串有效但在C#代码中无效。