我遇到了在UserControl和Page load之间动态更改位图图像的问题。
我正在使用调度程序计时器来保持图像更改。但它不起作用。该错误表明我的uriSource为空。
我正在使用ms visual studio 2012,metro application c#
UserControl中的代码xaml:
<Image x:Name="img">
<Image.Source>
<BitmapImage UriSource="{Binding Path=BitmapImage}" />
</Image.Source>
</Image>
UserControl中的代码:
public BitmapImage BitmapImage
{
get { return _bitmapImage; }
set
{
if (_bitmapImage == value) return;
_bitmapImage = value;
RaisePropertyChanged("BitmapImage");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
页面加载中的代码:
int eyesState = 1;
private void minionAnimation_Tick(object sender, object e)
{
if (eyesState == -1)
{
ghosts[0]._bitmapImage.UriSource = new Uri(this.BaseUri, @"Assets/test.png");
}
else
{
ghosts[0]._bitmapImage.UriSource = new Uri(this.BaseUri, @"Assets/test2.png");
}
eyesState *= -1;
}
答案 0 :(得分:1)
尝试:
XAML:
<BitmapImage UriSource="{Binding Path=BitmapImageUri}" />
代码:
private Uri _bitmapImageUri;
public Uri BitmapImageUri
{
get { return _bitmapImageUri; }
set
{
if (_bitmapImageUri == value) return;
_bitmapImageUri= value;
RaisePropertyChanged("BitmapImageUri");
}
}
在计时器中:
ghosts[0].BitmapImageUri = new Uri(this.BaseUri, @"Assets/test.png");