WPF Kendisine Bağlanır


89

Bir WPF'im var Windowve bir yerde ListViewa'yı bağladığım bir yer List<string>var.

Şimdi benim içimde bir yerde ListViewbir TextBoxve Contentözellik ayarlandı {Binding}.

Ama bu kısaltmadır. Kendisine bağlanmak için tam bağlayıcılığı nasıl yazarım?

{Binding Path=Self}işe yaramıyor, işe yaramıyor {Binding Self}(burada ikincisi birincisi için bir kısayol).


Bu konuyla ilgili bir yazıya değinmek istiyorum yukarıdaki cevap tamamen doğru ama yukarıdaki cevabı tamamlayan bir nokta var. İşte bağlantı .
Ali Fattahian

Yanıtlar:


251

Kısa cevap : {Binding}olup değildir (anlamında "kendisine bağlanmasını" için bir kısayol RelativeSource.Self ). Aksine, geçerli kaynağa bağlanan {Binding} eşdeğerdir {Binding Path=.} .


Ayrıntılandırmak için : Bağlamanın bir kaynağı ve yolu vardır . Örneğin, şunu kullanarak "kendisine bağlanma" yapabilirsiniz

<myUIControl myProperty="{Binding RelativeSource={RelativeSource Self}, Path=x}" />

Ancak bu, kaynağı denetimin kendisine ayarlar , böylece xkullanıcı arabirimi denetiminin özelliğine erişmeye çalışır ( xgeçerli veri bağlamının özelliği yerine ). Sorunuzu nasıl anladığıma göre, istediğiniz bu değil; özellikle, ne {Binding}yaptığı değildir : {Binding}kaynağı olduğu gibi tutar (genellikle DataContextbir ana öğenin) ve kaynağın kendisine bağlanır (eşdeğer Path=.).


Kullanıcı ContextMenu'nun MenuItem's Command'larından birine bir InputBinding KeyBinding aracılığıyla erişirse CommandParameter="{Binding ElementName=MyDataGrid, Path=SelectedItems}", SelectedItems'i Bound ICommand'e aktaran bir DataGrid'im var . Ancak, nullContextMenu aracılığıyla erişilirse geçilir. Denedim CommandParameter="{selectedItems Bağlama}" , ve ` "{SelectedItems =, ElementName = MyDataGrid Yolu Bağlama}" "{Binding RelativeSource={RelativeSource Self}, Path=SelectedItems}".
Tom

@Tom: Bunu bir yorumda yanıtlamak zor. Lütfen yeni bir soru oluşturun ve tekrarlanabilir minimum bir örnek sağlayın .
Heinzi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.