كيفية تعيين Itemsource إلى Comobox داخل DataTemplate بشكل ديناميكي؟

StackOverflow https://stackoverflow.com/questions/1216406

  •  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>

  1. كيف سأحمل 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; }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top