c# - 在 xaml 中声明数据模板时如何在代码中创建绑定(bind)

标签 c# wpf data-binding

我有一个在 xaml 中声明的数据模板。
例如

    <DataTemplate x:Key="TestTemplate">
        <StackPanel>
            <TextBox Name="txtBox"  Visibility="Visible"></TextBox>                
        </StackPanel>             
    </DataTemplate>

我希望在生成元素之前在代码后面设置 txtBox 的绑定(bind),因为我对生成的不同元素有不同的绑定(bind)路径

我可以在后面的代码中获取模板:

DataTemplate tmplt = FindResource("TestTemplate") as DataTemplate;

但我不确定下一步该做什么。如何获取 txtBox 引用以设置绑定(bind)。

最佳答案

我们必须记住一件事,即模板不是实例化的 UI 控件。它们是 XAML 中的流对象,并在 UI 元素之间共享。因此,如果您编辑 dataTemplate 并更改其结构(通过添加、编辑、删除模板下的元素),它将更改在控件之间共享的一个数据模板。因此,使用该模板的其他元素也将受到更改的影响。

现在让我们解决向文本框添加动态出价的问题。你说每个生成的文本框都会有不同的绑定(bind)路径。所以这绝对不需要更改数据模板本身!

在文本框生成后,您将必须访问文本框并向其添加动态绑定(bind)。

我看到您的绑定(bind)因您的“情况”而异,那么您为什么不能使用 TemplateSelector?模板选择器将在运行时决定哪个数据模板(将一个特定的绑定(bind)应用到 TetxBox)。

关于c# - 在 xaml 中声明数据模板时如何在代码中创建绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7336160/

相关文章:

mvvm - KnockOutJS - 单个 View 中的多个 View 模型

wpf - WPF MVVM 用户控件的最佳实践。避免绑定(bind)问题

c# - Silverlight 页面登录/重定向/导航

C# 围绕 x 代码进行空检查的模块化方法

.net - 在不使用 WindowsFormsHost 的情况下在 WPF 中查看 PDF

wpf - 文本框到数字绑定(bind)

c# - 为什么 kinect 演示在我的电脑上速度很慢?

c# - 此类 Azure 网站挂起的原因可能是什么?

c# - 保存呈现的 UIElement 图像大于它在屏幕上显示的图像

c# - 绑定(bind)到显式接口(interface)实现的 SortDescription