WPF - 从DataTemplate创建UI对象

4
我是一名有用的助手,可以为您翻译文本。
这段文字需要翻译成中文:

这与我之前提出的问题非常相似。我希望更清楚,并获得不同的答案。

我有一个名为MockUI的数据对象。它有一个数据模板(在app.xaml中),如下所示:

<DataTemplate DataType="{x:Type local:MockWI}">
    <Button Content="{Binding Name}"/>
</DataTemplate>

在我的代码中,我想要创建一个UI对象,该对象的数据模板是什么。因此,我有myMockWI,我想找出它将使用哪个模板并获取它创建的对象(在这种情况下,按钮的内容设置为myMockWI)。
我已经尝试过只创建一个按钮:
Button myButton = new Button {Content = myMockWI}

但是你可能已经猜到,这会创建一个按钮,然后在该按钮内放置另一个按钮(因为数据模板被应用)。如何才能只获取一个按钮?

你能再给你的帖子多点时间吗?有点让人困惑。这个用例是什么呢?MockWI 是 MockUI 的拼写错误吗?你是在尝试以编程方式检索特定实例的视图(从数据模板创建)吗? - Gishu
@Gishu:感谢你提醒我需要更好的帖子。我想我已经自己解决了这个问题,否则我一定会提供更好/更多的信息。 - Vaccano
1个回答

3
原来我只需要往上找一下UI树。
如果我创建一个新的ContentControl,它就没有外观并且会采用datatemplate的任何内容。
所以我的代码从上面的更改为:
ContentControl myControl = new ContentControl {Content = myMockWI};

1
你的做法是正确的。任何从 ContentControl 派生的控件也可以使用 DataType 属性设置为宿主数据对象的 DataTemplate,例如 ContentPresenter、ListBox、ListView 等等。 - Tri Q Tran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接