更改数据模板中的文本块文本
本文关键字:文本 数据 | 更新日期: 2023-09-27 18:26:46
我有一个DataTemplate,其中有一个带有2个RowDefinitions的Grid布局。我在第一行中有一个TextBox,在第二行有一个ComboBox。
我已经在ResourceDictionary中定义了DataTemplate。
这是DataTemplate:的代码
<DataTemplate x:Key="myDataTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBox Name ="txtChannelDescription" Grid.Row="0" Margin="1,1,1,1"/>
<ComboBox Name="cmbChannelTag" Grid.Row="1" IsReadOnly="True" Margin="1,1,1,1"/>
</Grid>
</DataTemplate>
我在代码隐藏中使用此DataTemplate,如下所示:
(DataTemplate)FindResource("myDataTemplate")
如何在运行时设置TextBox.Text的值和组合框的ItemSource?我使用DataTemplate作为DataGridTemplateColumn.Header.的模板
创建一个适合您用途的自定义数据类型(在本例中具有名为ChannelDescription
和ChannelTag
的属性),然后将值绑定到您的DataTemplate
:
<DataTemplate x:Key="myDataTemplate" DataType="{x:Type NamespacePrefix:YourDataType}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBox Text="{Binding ChannelDescription}" Grid.Row="0" Margin="1,1,1,1"/>
<ComboBox ItemsSource="{Binding ChannelTag}" Grid.Row="1" IsReadOnly="True"
Margin="1,1,1,1"/>
</Grid>
</DataTemplate>
它会这样使用:
在视图模型中,您将有一个集合属性,比如说Items
:
public ObservableCollection<YourDataType> Items { get; set; }
(您的物业应该实现与此不同的INotifyPropertyChanged
接口)
在您看来,您将拥有一个集合控件,比如ListBox
:
<ListBox ItemsSource="{Binding Items}" ItemTemplate="{StaticResource myDataTemplate}" />
然后,集合控件中的每个项都将具有相同的DataTemplate
,但这些值将来自Items
集合中类型为YourDataType
的实例。