WPF-数据模板中的绑定属性
我正在构建一个窗口,其中包含一组共享相同布局的行,但它们的内容应该不同,例如:WPF-数据模板中的绑定属性,wpf,xaml,binding,datatemplate,resourcedictionary,Wpf,Xaml,Binding,Datatemplate,Resourcedictionary,我正在构建一个窗口,其中包含一组共享相同布局的行,但它们的内容应该不同,例如: | (Label Content:)"Name1" | (Textbox Text)"SomeText" | | (Label Content:)"Name5" | (Textbox Text)"OtherText" | 我定义了一个DataTemplate,它基本上包含一个指定每列大小的网格,包含它所需要的所有元素(一些标签、文本框等),并设置它们的公共属性 <UserControl.Resources&
| (Label Content:)"Name1" | (Textbox Text)"SomeText" |
| (Label Content:)"Name5" | (Textbox Text)"OtherText" |
我定义了一个DataTemplate
,它基本上包含一个指定每列大小的网格,包含它所需要的所有元素(一些标签、文本框等),并设置它们的公共属性
<UserControl.Resources>
<DataTemplate x:Key="AxisRangeEntry" x:Shared="False">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="50" />
....
</Grid.ColumnDefinitions>
<Label x:Name="MyLabel" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center">
...
<TextBox x:Name="MyTextbox" Grid.Column="2" Width="110" HorizontalContentAlignment="Right" />
...
</Grid>
</DataTemplate>
</UserControl.Resources>
....
...
...
然后在我的窗口中,我开始将数据模板作为ContentControl添加到堆栈面板中:
<ContentControl ContentTemplate="{StaticResource AxisRangeEntry}" />
<ContentControl ContentTemplate="{StaticResource AxisRangeEntry}" />
....
....
我正在努力弄清楚如何定义DataTemplate
中控件的某些属性,使其可绑定,并在开始定义ContentControl
时将其绑定到静态值/外部属性。实际上,每个ContentControl
都需要能够定义像MyLabel
内容和MyTextbox
文本这样的内容
我以前创建过CustomControls,它对它们有dependencProperties
,当我在另一个窗口中添加它们时,可以绑定到它。使用DataTemplate
时,我不确定如何将这些字段定义为可绑定字段,并在包含新版本的模板时绑定到它们
任何帮助都将不胜感激。听上去,您没有使用MVVM模式 对于您的情况,我建议使用MVVM——看看这篇文章,快速介绍适合您的情况的内容(带有ItemTemplate的ItemsControl) 您要做的是创建一个ObserveObject来表示每一行,然后将ObserveObject集合绑定到ItemsControl的ItemsSource,并将ItemTemplate设置为您创建的DataTemplate。在DataTemplate中,您将指定对ObserveObject行的属性的每个绑定,WPF将绑定到每一行的正确实例
无论哪种方式,DataTemplates主要用于模板化特定的数据类型。如果确实需要以这种方式实现视图,则可以使用具有依赖属性的自定义UserControl。您提供了要绑定的项的动态特性,因此此答案将尝试在参数集内提供指导 …[定义]的某些属性 要绑定到的DataTemplate内的控件
{Binding}
将默认为数据上下文中的该项。如果绑定项具有特定属性,则使用{Binding MyPropertyName}
。只需验证父级或其祖先具有有效的数据上下文x:name=“MyControl”
),在模板绑定中,可以直接指向它的路径,例如
{Binding MyCustomControlDependencyProperty,ElementName=MyControl}