2010-01-30 17 views
5

WPF uygulamasında, kullanıcıya göstermek istediğim bir boolean özelliğim var (örneğin salt okunur bir onay kutusuyla). Normal olarak INotifyPropertyChanged'i uygulardım, böylece WPF bu konuda hareket edebilir ve onay kutusunu buna göre değiştirebilir.WPF: Göster Özellik Değiştir INotifyPropertyChanged interface

Şu anda sahip olduğum sorun, bu özellik değerinin kapalı bir çerçeveden alındığıdır. Yani, yalnızca değeri sorgulayabilirim, ancak abone olabileceğim bir değişiklik olayı yok.

İlk düşüncem, periyodik olarak (her 10 milisaniyede bir) değerin seçilmesini ve değerin değiştiğinde bir olay oluşturmasını sağlayan ayrı bir iş parçacığı oluşturmaktı. Ama bu bana çok fazla benziyor.

Bu yüzden sorum şu: WPF'de INOTifyPropertyChanged öğesinin bir seçenek olmadığı değişen değerleri görüntülemek için bir özellik var mı? Bir çeşit yoklama mekanizması, belki? Eğer değilse, bu sorunu nasıl çözersiniz?

Zaman ayırdığınız için teşekkür ederiz.

+0

mümkün olduğunu inanmıyorum. Ben cevap olarak. –

cevap

4

:(. kapalı bir çerçeve geliyor gibi

public class ClosedSourceObjectViewModel : ViewModelBase 
{ 
    private ClosedSourceObject ClosedSourceObject 
    { 
     get; 
     set; 
    } 

    public bool SomeProperty 
    { 
     get { return this.ClosedSourceObject.SomeProperty; } 
     set 
     { 
      if (value != this.ClosedSourceObject.SomeProperty) 
      { 
       RaisePropertyChanging("SomeProperty"); 
       this.ClosedSourceObject.SomeProperty = value; 
       RaisePropertyChanged("SomeProperty"); 
      } 
     } 
    } 
} 
+0

Çok fazla özellik varsa, size zaman kazandırmak için eksiksiz bir sarmalayıcı sınıfı da oluşturabilirsiniz. – smaclell

+3

Gerçekten de, "ViewModelBase", "INotifyPropertyChanging" ve "INotifyPropertyChanged" uygulamalarını içerir. – user7116

+0

Mesajlarınız için teşekkürler! Bu gerçekten kötü bir haber. :-( Yaklaşımınız ile ilgili problem, benim değerin benim tarafımdan değil, kapalı çerçeveden değiştirilmiş olmasıdır.Ayrıca hiç değiştiremiyorum –

0

@Alastair ile aynı fikirdeyim. Çünkü

(1) Mülk değişikliği hakkında size bilgi vermeyen kapalı bir çerçeveden değer almak istiyorsunuz.
(2) Değeri yoklayabilirsiniz, ancak bunu yapmak istemezsiniz! bir yerde söz konusu nesne için bir "ViewModel" oluşturmak, kontrol etmek ve kendin işleyemez gelen değer gelirse bunu yapmanın başka bir yolu var olacak sanmıyorum

+0

Neden kamuoyu yoklaması caydırıcı bir etki yaptığına göndermek için yeterince emin değilim? mülkiyet don salt okunur olup değiştirir' t hemen yansıtılmalıdır, kısa bir gecikme iyidir –

+0

@Max: Bunu yok sayılırken yoklama olarak görmüyorum. ng, bu imkansız. Bunu yapmanın tek yolu yoklama. –

+0

Tamam, zaman ayırdığınız için teşekkürler. :-) O zaman yoklama ... –

İlgili konular