Durum güncellemeleri etrafında bir WCF hizmeti aldım:WPF neden bir nesnenin özelliklerini değil, alanların özelliklerini destekliyor?
[DataContract]
public struct StatusInfo
{
[DataMember] public int Total;
[DataMember] public string Authority;
}
...
public StatusInfo GetStatus() { ... }
ViewModel'de bir özelliği şu şekilde gösteriyorum:
public class ServiceViewModel : ViewModel
{
public StatusInfo CurrentStatus
{
get{ return _currentStatus; }
set
{
_currentStatus = value;
OnPropertyChanged(() => CurrentStatus);
}
}
}
Ve XAML şöyle ki:
<TextBox Text="{Binding CurrentStatus.Total}" />
Uygulamayı çalıştırdığımda, çıktı penceresindeki Toplam özelliğinin bulunamadığını belirten hatalar görüyorum. Kontrol ettim ve çifte kontrol ettim ve doğru yazdım. Hataların, özellikle 'özellik' bulunamadığını belirttiği ortaya çıktı. Yani yapısına bir özellik ekleyerek bunu iyi çalışır. Ancak bu, WPF'nin alanlara tek yönlü bağlanmayı başaramayacağı garip görünüyor. Sözdizimsel olarak kodda onlara aynı erişirsiniz ve sadece StatusInfo yapısına özel bir görünüm modeli oluşturmak zorunda kalmanız aptalca görünür. WPF bağlama hakkında bir şey özledim mi? Bir alana bağlanabilir misiniz yoksa tek yolu bağlama mı?
Bir C++ programcısı olarak, yukarıdaki yorumlarınızı çok zor buluyorum. Aynı zamanda farklı sonuçlara varmış gibi görünüyorum. Örneğin, "Yani yaklaşık 5x daha yavaş, ama yine de çok hızlı" diyorsunuz. Gördüğüm kadarıyla, "Yapıların kullanımı yaklaşık 5x daha hızlı, ama yine de çok yavaş." –
@Daniel sigh, yine başlıyoruz, "C++ her şeyden daha hızlı, her zaman ve her zaman kullanılmalı" (iç çekiş). Çok çeşitli uygulamalarda, doğru bir şekilde elde edilmesi önemli bir kolaylıktan başka kayda değer bir fark yoktur. –
C++ daha hızlı olduğunu söylemedim! Sonuç olarak, bazı ciddi önyargılara (veya belki de yanlış anlamalara) sahip olduğunuz belirtildi. "Çok çeşitli uygulamalarda, bir diğeri de doğru olmak için önemli ölçüde daha kolay bir fark yoktur - bu yüzden C++ 'nın daha hızlı olmasına rağmen, bu önemli değil - ancak C++' nın doğru olması kolaylaşıyor." bu önemli. Ya da sadece argümanımı desteklemek için söylediklerini yanlış yorumladım ... Gerçekten iç. –