Benim asıl soru, bir denetim için birden çok kaynağa sahip olduğumuz (bir datagrid içinde bir combobox) (veya hem datacontext hem de itemssource sahip) olay yerinde bağlama durumu hakkında. O zaman bağlamanın hangi kaynağı kullanacağını nasıl bilebiliriz? (bunu açıklamak için herhangi bir sözdizimi)ÖğelerSource vs DataContext bağlama durumunda
Bir datagrid öğesinin bir itemssource = "Oyuncular Listesi" datacontext = "Manager" ve bir tür sütun olarak bir combobox sahip olduğunu varsayalım. Ayrıca, her oyuncunun bir koleksiyon türü olan bir Envanter mülküne sahip olduğunu varsayarız. Sonra DataGrid.Columns içeride
:
- (bağlanma için) her bir sütunun akım kaynağı bir oyuncu (bu ben şimdiye kadar bunu anlamak nasıl) 'dir. Sadece oynatıcının mülküne "yönetici" veri mülkünün mülkiyetine bağlanabiliriz. "Yönetici" nin mülkiyetine bağlamanın hiçbir yolu yoktur. Doğrumuyum?
- Ancak, combobox sütunlarına geçersek, combobox'ın itemssource = 'player' envanteri 'olmasına izin verdiğimi varsayalım, sonra comboboxItem için geçerli kaynak envanterde her öğe olacaktır. Ve eğer bağlayıcıyı kullanırsam, sadece bu eşyaların mülküne bağlanabilir. Ancak, bazen de, özellikle seçilen Değer ve SelectedItem özelliklerinin, combobox'ın özelliklerinin içindeki özelliğine bağlayabileceğimiz kodu görüyorum. Biraz kafam karıştı bana yardım edebilir misin?
size
SelectedValue, SelectedItem için, eğer bağlayıcıysak, o zaman combobox'ın datacontext'ine (combobox'ın itemsource'undaki her bir öğenin özelliği değil) özelliğine bağlanır. Bu nedenle, Combobox'ın şimdiki değeri olan SelectedValuePath, DisplayMemberPath öğesinin veri katmanı olan Player'ın özelliğidir: temelde bağlayıcı olmadığından, değere atamak için İşaretleme Sözdizimini kullanmayız. Bu yüzden, öğenin mülkünün adını, itemsource'unda (datacontext'in mülkiyeti değil) atayabiliriz. Haklı mıyım – Tai