برنامج الأغذية العالمي: مشكلة مع القيم ملزم لتحرير وسرد داخل GridViewColumn
-
08-07-2019 - |
سؤال
وآرائي dataContext يحدها إلى presentationModel مع اثنين من observableCollections الأعضاء. في عرض لدي واحدة listView الذي لا بد ItemSource لهو observableCollection أولا. في واحدة من العمود LilstViews أريد أن أقدم القيم من Colletion obeservable الثاني في بلدي presentationModel. أنا غير قادر على معرفة كيفية الحصول على القيم من observableCollection في بلدي منسدل. هل لديها فكرة عن كيفية حل هذه المشكلة؟
المحلول
وأول شيء عليك القيام به هو إنشاء قالب بيانات يحتوي على تحرير وسرد الخاص بك، في هذه الحالة لقد بد من ItemsSource إلى DependencyProperty على نافذة المضيف. هذا يحتوي على نموذج العرض، والتي لديها خاصية تسمى ComboSource. لقد ارتبطت SelectedValue، عبر DataContext في ListViewItem، وإلى خاصية الذي يحمل القيمة المحددة.
<ListView.Resources>
<DataTemplate x:Key="comboBoxTemplate">
<ComboBox
ItemsSource="{Binding
Path=ModelData.ComboSource,
RelativeSource={RelativeSource AncestorType=Window}}"
SelectedValue="{Binding
Path=DataContext.Selection,
RelativeSource={RelativeSource AncestorType=ListViewItem}}"
DisplayMemberPath="Item"
SelectedValuePath="Id"
/>
</DataTemplate>
</ListView.Resources>
وبعد ذلك سوف تحتاج إلى مرجع هذا من CellTemplate على GridViewColumn
<GridViewColumn
Header="Selection"
Width="160"
CellTemplate="{StaticResource comboBoxTemplate}"
/>