Saya punya WPF Window
, dan di suatu tempat ada ListView
tempat saya mengikatnya List<string>
.
Sekarang di suatu tempat di saya ListView
ada TextBox
dan Content
properti diatur ke {Binding}
.
Tapi ini singkatannya. Bagaimana cara menulis full binding untuk mengikat dirinya sendiri?
{Binding Path=Self}
tidak berfungsi, begitu pula {Binding Self}
(di mana yang terakhir adalah jalan pintas untuk yang pertama).
wpf
data-binding
binding
self
Ular
sumber
sumber
Jawaban:
Jawaban singkat :
{Binding}
adalah tidak jalan pintas untuk "mengikat dirinya sendiri" (dalam arti RelativeSource.Self ). Sebaliknya,{Binding}
setara dengan{Binding Path=.}
, yang mengikat ke sumber saat ini.Untuk menguraikan : Pengikatan memiliki sumber dan jalur . Anda dapat melakukan "pengikatan dirinya sendiri", misalnya, dengan menggunakan
<myUIControl myProperty="{Binding RelativeSource={RelativeSource Self}, Path=x}" />
Namun, ini menyetel sumber ke kontrol itu sendiri, sehingga ia akan mencoba mengakses properti
x
kontrol UI (bukan propertix
konteks data saat ini). Dari bagaimana saya memahami pertanyaan Anda, ini bukanlah yang Anda inginkan; secara khusus, bukan itu yang{Binding}
dilakukannya:{Binding}
menjaga sumber sebagaimana adanya (biasanyaDataContext
dari beberapa elemen induk) dan mengikat ke sumber itu sendiri (setara denganPath=.
).sumber
CommandParameter="{Binding ElementName=MyDataGrid, Path=SelectedItems}"
, itu akan meneruskan SelectedItems ke Bound ICommand. Namun,null
diteruskan jika diakses melalui ContextMenu. Saya sudah mencobaCommandParameter=
"{Binding SelectedItems}",
"{Binding ElementName = MyDataGrid, Path = SelectedItems}" `dan"{Binding RelativeSource={RelativeSource Self}, Path=SelectedItems}"
.