我想将CurrentWallpaper变量绑定到Image.Source,并在更改时更新Image控件。 那是我的代码:
DataContext="{Binding RelativeSource={RelativeSource Self}}"
在Page标签处,我添加了这个DataContext属性。
<Image x:Name="CurrentWallpaperImage" Source="{x:Bind CurrWall}"/>
这是我的图像控件
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(path);
IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.Read);
await CurrentWallpaper.SetSourceAsync(stream);
当我尝试设置新源时,Image控件不会更新。
{include file="common/usergroup.tpl" id=$order_info.user_id}
答案 0 :(得分:3)
您实际上并没有为页面的CurrentWallpaper属性分配新值。所以OnPropertyChanged没有被触发。
2个选项,或者您仍然使用SetSource方法,但在该行之后自己调用OnPropertyChanged("CurrentWallpaper");
以确保更新UI。
或者使用您拥有的流创建一个新的BitmapImage,并完全为您的CurrentWallpaper提供新的bitmapimage。
CurrentWallpaper = newBitmapImage;
答案 1 :(得分:1)
首先,将CurrentWallpaper
声明为public
属性
private BitmapImage currentWall = new BitmapImage();
public BitmapImage CurrentWallpaper
{
get { return currentWall; }
set { currentWall= value; OnPropertyChanged("CurrentWallpaper"); }
}
第二步,将Binding
更改为OneWay
<Image x:Name="CurrentWallpaperImage" Source="{x:Bind CurrWall, Mode=OneWay}"/>
如果在第一步或第二步后无效,请尝试手动提升事件
await CurrentWallpaper.SetSourceAsync(stream);
OnPropertyChanged("CurrentWallpaper");