WPF ผูกกับตัวเอง


89

ฉันมี WPF Windowและมีที่ไหนสักแห่งListViewที่ฉันผูกList<string>กับ.

ตอนนี้ที่ไหนสักแห่งในฉันListViewมีTextBoxและการตั้งค่าคุณสมบัติContent{Binding}

แต่นี่คือชวเลข ฉันจะเขียนการผูกแบบเต็มเพื่อผูกเข้ากับตัวมันเองได้อย่างไร?

{Binding Path=Self}ไม่ทำงานไม่ทำ{Binding Self}(โดยที่อันหลังเป็นทางลัดสำหรับอดีต)


ฉันต้องการพูดถึงโพสต์ที่เกี่ยวข้องกับหัวข้อนี้คำตอบข้างบนนั้นถูกต้องทั้งหมด แต่มีประเด็นที่ทำให้คำตอบข้างต้นสมบูรณ์ นี่คือการเชื่อมโยง
Ali Fattahian

คำตอบ:


251

คำตอบสั้น ๆ : {Binding}เป็นไม่ได้ทางลัดสำหรับ "ผูกพันกับตัวเอง" (ในความรู้สึกของRelativeSource.Self ) แต่{Binding} เทียบเท่ากับ {Binding Path=.}ซึ่งเชื่อมโยงกับแหล่งที่มาปัจจุบัน


เพื่ออธิบาย : การยึดเกาะมีแหล่งที่มาและเส้นทาง คุณสามารถ "เชื่อมโยงกับตัวมันเอง" ตัวอย่างเช่นโดยใช้

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

อย่างไรก็ตามสิ่งนี้จะตั้งค่าแหล่งที่มาเป็นตัวควบคุมดังนั้นจึงจะพยายามเข้าถึงคุณสมบัติxของตัวควบคุม UI (แทนที่จะเป็นคุณสมบัติxของบริบทข้อมูลปัจจุบัน) จากที่ฉันเข้าใจคำถามของคุณนี่ไม่ใช่สิ่งที่คุณต้องการ โดยเฉพาะอย่างยิ่งไม่ใช่สิ่งที่{Binding}ทำ: {Binding}เก็บแหล่งที่มาตามที่เป็นอยู่ (โดยปกติจะเป็นDataContextองค์ประกอบหลักบางส่วน) และเชื่อมโยงกับแหล่งที่มา (เทียบเท่าPath=.)


ฉันมี DataGrid ที่หากผู้ใช้เข้าถึงหนึ่งในคำสั่งของ MenuItem ของ ContextMenu ผ่าน KeyBinding ของ InputBinding ซึ่งCommandParameter="{Binding ElementName=MyDataGrid, Path=SelectedItems}"จะส่งผ่าน SelectedItems ไปยัง Bound ICommand อย่างไรก็ตามnullจะถูกส่งผ่านหากเข้าถึงผ่าน ContextMenu ฉันได้พยายามCommandParameter="{ผูก SelectedItems}" , "{ผูก ElementName = MyDataGrid เส้นทาง = SelectedItems}" "{Binding RelativeSource={RelativeSource Self}, Path=SelectedItems}"`และ
ทอม

@ ทอม: นี่เป็นเรื่องยากที่จะตอบในความคิดเห็น โปรดสร้างคำถามใหม่และให้ตัวอย่างเช่นสามารถทำซ้ำได้น้อยที่สุด
Heinzi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.