如何使用C#代码构建DataTemplate?

我正在尝试为winform互操作构建下拉列表,并且正在代码中创建下拉列表。但是,我在根据我指定的DataTemplate绑定数据时遇到问题。

我想念什么?

drpCreditCardNumberWpf = new ComboBox();  

DataTemplate cardLayout = new DataTemplate {DataType = typeof (CreditCardPayment)};

StackPanel sp = new StackPanel

{

Orientation = System.Windows.Controls.Orientation.Vertical

};

TextBlock cardHolder = new TextBlock {ToolTip = "Card Holder Name"};

cardHolder.SetBinding(TextBlock.TextProperty, "BillToName");

sp.Children.Add(cardHolder);

TextBlock cardNumber = new TextBlock {ToolTip = "Credit Card Number"};

cardNumber.SetBinding(TextBlock.TextProperty, "SafeNumber");

sp.Children.Add(cardNumber);

TextBlock notes = new TextBlock {ToolTip = "Notes"};

notes.SetBinding(TextBlock.TextProperty, "Notes");

sp.Children.Add(notes);

cardLayout.Resources.Add(sp, null);

drpCreditCardNumberWpf.ItemTemplate = cardLayout;

回答:

假设您已经ItemsSourcedrpCreditCardNumberWpf… 设置了etc

//create the data template

DataTemplate cardLayout = new DataTemplate();

cardLayout.DataType = typeof(CreditCardPayment);

//set up the stack panel

FrameworkElementFactory spFactory = new FrameworkElementFactory(typeof(StackPanel));

spFactory.Name = "myComboFactory";

spFactory.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);

//set up the card holder textblock

FrameworkElementFactory cardHolder = new FrameworkElementFactory(typeof(TextBlock));

cardHolder.SetBinding(TextBlock.TextProperty, new Binding("BillToName"));

cardHolder.SetValue(TextBlock.ToolTipProperty, "Card Holder Name");

spFactory.AppendChild(cardHolder);

//set up the card number textblock

FrameworkElementFactory cardNumber = new FrameworkElementFactory(typeof(TextBlock));

cardNumber.SetBinding(TextBlock.TextProperty, new Binding("SafeNumber"));

cardNumber.SetValue(TextBlock.ToolTipProperty, "Credit Card Number");

spFactory.AppendChild(cardNumber);

//set up the notes textblock

FrameworkElementFactory notes = new FrameworkElementFactory(typeof(TextBlock));

notes.SetBinding(TextBlock.TextProperty, new Binding("Notes"));

notes.SetValue(TextBlock.ToolTipProperty, "Notes");

spFactory.AppendChild(notes);

//set the visual tree of the data template

cardLayout.VisualTree = spFactory;

//set the item template to be our shiny new data template

drpCreditCardNumberWpf.ItemTemplate = cardLayout;

你可以使用我已经设置了同样的方式ToolTipTextBlocks到集中的其他属性,如利润。

以上是 如何使用C#代码构建DataTemplate? 的全部内容, 来源链接: utcz.com/qa/422239.html

回到顶部