1

ComboBoxに指定されたアイテムには、アイテムItemsControlの に基づくさまざまなアイテムがありDataContextます ( の ではありませんItemsControl)。それはできますか?そしてどうやって?できればコードビハインドから。

私は次のものを持っていますDataModel

class Tester
{
    public Tester(string name, string surname)
    {
        Name = name;
        Surname = surname;
    }

    public string Name { get; set; }
    public string Surname { get; set; }
    public override string ToString()
    {
        return Name + " " + Surname;
    }
}

class TheT
{
    public ObservableCollection<Tester> TesterObject;

    public TheT()
    {
        TesterObject = new ObservableCollection<Tester>();
    }

    public string myDisplayName { get { return "test"; } }

    public void Add(Collection<Tester> col)
    {
        TesterObject.Clear();
        foreach (Tester t in col) { TesterObject.Add(t); }
    }
}

Window私が持っているコードでは:

ObservableCollection<TheT> myDataV ;
Public MainWindow()
{
    InitializeComponent();

    ObservableCollection<Tester> Tester1 = new ObservableCollection<Tester>();
    Tester1.Add(new Tester("Sunny", "Jenkins"));
    Tester1.Add(new Tester("Pieter", "Pan"));

    ObservableCollection<Tester> Tester2 = new ObservableCollection<Tester>();
    Tester2.Add(new Tester("Jack", "Sanders"));
    Tester2.Add(new Tester("Bill", "Trump"));

    myDataV = new ObservableCollection<TheT>();
    myDataV.Add(new TheT(Tester1));
    myDataV.Add(new TheT(Tester2));

    IControl.ItemsSource = myDataV;
    IControl.ItemTemplate = TestingDT;
}

IControlItemsControl設定されているXAML:

<ItemsControl x:Name="IControl" Margin="53,375,81,63">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

そしてDataTemplate、私はあらゆる種類の方法を試しました。ただし、以下のようにアイテムを表示することはできません。

// the DataTemplate
private DataTemplate TestingDT
{
    get
    {
        DataTemplate DFT = new DataTemplate();
        DFT.DataType = typeof(TheT);

        FrameworkElementFactory Item = new FrameworkElementFactory(typeof(ComboBox));

        Binding B = new Binding("TesterObject")
        {
            Source = this
        };

        Item.SetBinding(ComboBox.ItemsSourceProperty, B);
        //Item.SetValue(ComboBox.DisplayMemberPathProperty, "Name");

        DFT.VisualTree = Item;
        return DFT;
    }
}
4

1 に答える 1