2010-04-19 31 views
7

Normalde, bir veri kontrolünün 'güncellenmesi' istediğinizde, verilerin arkasındaki verilerin değiştiğini gösteren arabirime sinyal vermek için "PropertyChanged" olayını kullanırsınız.WPF Doğrudan DataContext ile Bağlantılı Bağlama Bağlama

Örneğin, bir mülkte "Görüntümetni" Buradan

<TextBlock Text="{Binding Path=DisplayText}"/>

ile datacontext bağlı olduğu bir TextBlock olabilir DataContext sonra PropertyName ile PropertyChanged olay "Görüntümetni," tutarsa Bu metin bloğunun metni güncellenmelidir (bağlanma Modunu değiştirmediğiniz varsayılarak). Bununla birlikte, denetimin son görünümünü ve görünümünü belirlemek için veri kontekstinde bir çok özelliği kullanan daha karmaşık bir bağlamaya sahibim. Üste | Bunu başarmak için doğrudan veri dosyasına bağlarım ve bir dönüştürücü kullanıyorum. Bu durumda bir görüntü kaynağı ile çalışıyorum. Gördüğünüz gibi

<Image Source="{Binding Converter={StaticResource ImageConverter}}"/>

, ben hiçbir yolu ile {Binding} datacontext doğrudan bağlamak için kullanabilecekleri, ben arıyorum resmi seçmek için bir ImageConverter kullanabilirsiniz. Ama şimdi güncellemeyi bağladığını söylemek için hiçbir yolum yok. Mülkteki olayı "." Ile yükseltmeyi denedim. çalışmayan propertyname olarak.

Bu mümkün mü? Dönüştürme mantığını bağlamanın ekleyebileceği bir özelliğe mi sarmalı mıyım, yoksa bağlamanın yenilenmesini (ciltlemeyi açıkça yenilemeden) anlamanın bir yolu var mı?

Herhangi bir yardım

büyük takdir. Teşekkürler! -Adam

cevap

17

geçici çözüm burada sadece bu özelliği kullanılan bağlayıcı içinde Sonra

public Object Self { get { return this; }}

döndü "Öz" denilen benim nesne (datacontext olarak kullanılmak üzere), bir özellik eklemek için oldu:

Ben buna Sonra

<Image Source="{Binding Path=Self, Converter={StaticResource ImageConverter}}"/>

PropertyChanged(this, new PropertyChangedEventArgs("Self"))

Bir çekicilik gibi çalışır.

Herkese teşekkürler.

+0

TEŞEKKÜR EDERİZ! Bunu arıyorum için deli oldu ve önerilerinde göründüğünde sormak üzereydim. – HDD

0

Hmm, tam uygulamayı göstermiyorsunuz. Ancak GUI'ye bağlı olan değerin PropertyChanged-Event'i sağlaması durumunda güncellemesi gerektiğini düşünüyorum.

Selamlar

+0

Sorun, görüntü kaynağının doğrudan datacontext'e değil, datacontext özelliğine bağlı olmasıdır. Dönüştürücü veri içeriğini alır ve bir görüntü kaynağı döndürür. Açıklığa kavuşturmak için, veri ortağının bir özelliğinin yolunu içeren bir ciltleme kullanır ve bu özellik için PropertyChanged öğesini çağırırsam, güncelleştirme gerçekleşir (çalışır). Ancak, görüntüyü (yalnızca bir özellikten daha fazlası) belirlemek için nesneye gereksinimim var. Teşekkürler. – Adam

+0

bunu yazarken bir düşünce vardı. Kendimi geri döndüren "Self" adlı nesnelere bir özellik koymaya çalışacağım ve sonra PropertyChanged ("Self") öğesini çağırmaya çalışacağım. Bunu bir atış yapacağım. – Adam

2

ben tam size mevcut dönüştürücü ile gerekenleri gerçekleştirerek bir yolu yoktur inanmıyorum. Bahsettiğiniz gibi, ViewModel'inizde hesaplama yapabilir veya dönüştürücünüzü IMulitValueConverter olarak değiştirebilirsiniz.

Kendi özel senaryonuzdan (dönüştürücü bir ViewModel sınıfına ve onun özelliklerinden birkaçıya), ViewModel'deki mantığı uygulamaya yöneliyordum.