动态更改位图图像

时间:2013-08-26 08:38:43

标签: c# windows-8

我遇到了在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;
    }

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");