假设我想将以下内容作为DataTemplate:
StackPanel stackPanel = new StackPanel();
Button button1 = new Button();
button1.Click += button1_Click;
Button button2 = new Button();
button2.Click += button2_Click;
stackPanel.Children.Add(button1);
stackPanel.Children.Add(button2);
如何将其转换为DataTemplate?我尝试创建一个DataTemplate类的实例,但我没有看到任何方法或属性可以让我将上面的stackpanel设置为DataTemplate对象的内容。
编辑: 我试图在Windows应用商店应用中执行此操作。
答案 0 :(得分:3)
The accepted answer to this question显示了如何在后面的代码中构建DataTemplate
。
//create the data template
DataTemplate objDataTemplate = new DataTemplate();
objDataTemplate.DataType = typeof(CreditCardPayment);
//set up the stack panel
FrameworkElementFactory spFactory = new FrameworkElementFactory(typeof(StackPanel));
spFactory.Name = "myFactory";
spFactory.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal); // Use Oritentation.Vertical if appropriate.
//Your code for creating the buttons goes here.
//set the visual tree of the data template
objDataTemplate.VisualTree = spFactory;
应该这样做。
答案 1 :(得分:0)
创建一个新的StackPanel
,将DataTemplate
对象添加为其子对象。
StackPanel stackPanel = new StackPanel();
stackPanel.Children.Add(objDataTemplate);
你在寻找这个(虽然你不能这样做),或者我误解了你的问题?
更新: 对于相反的
DataTemplate objDataTemplate = new DataTemplate(typeof(StackPanel));
FrameworkElementFactory stPanelElement = new FrameworkElementFactory(typeof(StackPanel));
objDataTemplate.VisualTree = stPanelElement;
希望这会有所帮助。