2013-07-15 2 views
0

내가 ItemsControl에 블록에서 사진 목록이 업데이트되지 않습니다, 객체가 클래스 아바타에서 인스턴스화 및 목록에 추가되었습니다.항목이

public class Avatar 
{ 
    public BitmapImage ImgSrc { get; set; } 
    public Visibility LdVis { get; set; } 
    public Visibility ImgVis { get; set; } 
    public Visibility ErrVis { get; set; } 
} 

Avatar avatar = new Avatar(); 
var bitmap = new BitmapImage(new Uri(uri)); 
bitmap.ImageOpened += (s, e) => avatar.ShowImage(); 
avatar.ImgSrc = bitmap; 
icAvatars.Items.Add(avatar); 

문제는 이미지가로드 내가 (avatar.ImgVis를 사용하여) 가시성 속성을 변경하려고 할 때, 아바타 개체의 변화가 실제 이미지에 전파되지 않습니다 보인다는 것이다. 왜 이런 일이 일어나는가?

+0

시도합니다 요소의 xaml 코드에서'Mode = TwoWay'를 사용합니다. – Rudi

+0

나는 그것을 시험해 보았다. 아무것도 바뀌지 않았다. –

+0

visibility 속성에 값을 할당하는 위치는 어디입니까? ?? Ldvis 및 ErrVis – Vishal

답변

3

Avatar 클래스는 INotifyPropertyChanged 인터페이스를 구현해야하며 ImgVis 속성이 변경 될 때마다 PropertyChanged 이벤트를 발생시켜야합니다. 런타임시 변경 될 수있는 모든 데이터 바운드 특성에도 동일한 사항이 적용되어야합니다.

public class Avatar : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    private void NotifyPropertyChanged(String propertyName) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

    private Visibility _imgVis; 

    public Visibility ImgVis 
    { 
     get{ return _imgVis; } 
     set 
     { 
      if (value == _imgVis) return; 
      _imgVis = value; 
      NotifyPropertyChanged("ImgVis"); 
     } 
    } 
} 
+0

같은 시간에 :) – loop

+0

너희들. 나는 그것을 점검하고 잘 작동했다. :) –

1
this is because you have not implement the inotifypropertychange on you avatar class so for doinng that just do like this.. 
public class Assignment : INotifyPropertyChanged 
{ 




    private Visibility _ImgVis ; 
    public Visibility ImgVis 
    { 
     get 
     { 
      return _ImgVis ; 
     } 
     set 
     { 
      _ImgVis = value; 
      FirePropertyChanged("ImgVis "); 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    protected void FirePropertyChanged(string propertyName) 
    { 
     if (this.PropertyChanged != null) 
     { 
      this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

} 
항상 추가하고 델의 아바타에 변화를 원하는 ..if 당신이 당신의 아바타 propeties로 만든 것이다 변경 어떤 업데이트됩니다

... 하나 그것을 관찰 모음

+1

미안하지만 나는 단지 하나의 대답을 올바른 것으로 선택할 수있다. 어쨌든, 고마워. :) –

관련 문제