0

我遇到了在 UserControl 和页面加载之间动态更改位图图像的问题。

我正在使用调度程序计时器来保持图像的变化。但是它不起作用。该错误表明我的 uriSource 为空。

我正在使用 ms visual studio 2012,metro 应用程序 c#

UserControl xaml 中的代码:

    <Image x:Name="img">
        <Image.Source>
            <BitmapImage UriSource="{Binding Path=BitmapImage}" />
        </Image.Source>
    </Image>

用户控件中的代码:

        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;
    }
4

1 回答 1

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");
于 2013-08-26T09:05:20.190 回答