2013-08-26 97 views
0

我遇到了在UserControl和Page負載之間動態變化的位圖圖像問題。動態更改位圖圖像

我正在使用調度計時器來更改圖像。但它不起作用。錯誤指出我的uriSource爲空。

我使用MS的Visual Studio 2012,metro應用,C#

代碼在用戶控件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; 
    } 
+1

你檢查,這是_not_? – Tigran

+0

嗨@Tigran,你是指「PropertyChanged!= null」?對不起,我還是這個新手。 – fafarifah

+0

我的意思是,實際值comiler指的是非空 – Tigran

回答

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