كيفية تعيين Itemsource إلى Comobox داخل DataTemplate بشكل ديناميكي؟
-
06-07-2019 - |
سؤال
لدي واحدة Listbox
وتطبيق واحد DataTemplate
مثله
<ListBox>
<ListBox.ItemTemplate>
<Grid>
<TextBlock Text="{Binding Path=Name}" Grid.Row=0/>
<ComoboBox Name="test"
DisplayMemberPath="Country"
SelectedValuePath="Country_ID">
</Grid>
- كيف سأحمل
ItemSource
الى هذاComboBox
ديناميكيًا بناءً على كل عنصر محدد فيListBox
؟أنا جديد في WPF ...الرجاء المساعدة في اقتراحاتكم القيمة.
المحلول
<ListBox>
<ListBox.ItemTemplate>
<Grid>
<TextBlock Text="{Binding Path=Name}" Grid.Row=0/>
<ComoboBox Name="test"
DataContent="{Binding RelativeSource={RelativeSource AncestorType=ListBox}}"
ItemsSource="{Binding}"
DisplayMemberPath="Country"
SelectedValuePath="Country_ID">
</Grid>
الآن أصبح صندوق التحرير والسرد الخاص بك يحتوي دائمًا على نفس مصدر العناصر الموجود في مربع القائمة الأصلي.
نصائح أخرى
إحدى الطرق للقيام بذلك هي ربط ItemsSource الخاص بك في ComboBox بخاصية SelectedValue في ListBox.لكي يعمل هذا، يجب أن يرتبط ListBox بمجموعة من العناصر التي تحتوي على قائمة بالعناصر التي سيرتبط بها ComboBox.
<ListBox
x:Name="CategoryList"
ItemsSource="{Binding Path=MasterList,
RelativeSource={RelativeSource AncestorType=Window}}"
DisplayMemberPath="MasterProperty"
SelectedValuePath="Details"
/>
<ComboBox
ItemsSource="{Binding Path=SelectedValue, ElementName=CategoryList}"
DisplayMemberPath="DetailProperty"
Grid.Row="1"
/>
في هذا المثال، قمت بإنشاء خاصية عامة في الكود الموجود خلف النافذة والذي يعرض قائمة بالكائنات التي تحتوي على مجموعة التفاصيل.
public List<Master> MasterList { get; set; }
public class Master
{
public string MasterProperty { get; set; }
public List<Detail> Details { get; set; }
}
public class Detail
{
public string DetailProperty { get; set; }
}
لا تنتمي إلى StackOverflow