在XAML WPF中动态创建文本块和文本框
本文关键字:文本 创建 动态 XAML WPF | 更新日期: 2023-09-27 18:15:53
我的问题是我有一个网格,其中TextBlock
和TextBox
的数量将根据ComboBox
和SelectedItem
的变化而变化
所以,我想要的是,我写了一个函数来获取TextBlock
和TextBox
的详细信息。
public void GetAdditionalAttributes()
{
using (Entities _entities = new Entities())
{
var attributeAll = (from c in _entities.AdditionalAttributeValues
where c.DeviceID == 35
select new AttributesClass { AttributeValue = c.AdditionalAttributeValue1, AttributeName = c.AdditionalAttribute.Name }).ToList();
DeviceAttributes = new ObservableCollection<AttributesClass>(attributeAll);
}
}
现在在XAML中我正在尝试:
<Style x:Key="AdditionalAttributeDisplay"
TargetType="Grid"
x:Name="AdditionalAttributeDisplay"
>
<Style.Resources>
<Style TargetType="ItemsControl">
<Setter Property="ItemsSource"
Value="{Binding DeviceAttributes}" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedValue, ElementName=DeviceTypeComboBox}"
Value="1">
<Setter Property="ItemsSource"
Value="{Binding DeviceAttributes}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Style.Resources>
</Style>
但我不知道如何创建TextBlock
或TextBox
与ItemSource
绑定
您可以更改ItemsControl
的ItemTemplate
。
<Style TargetType="ItemsControl">
<Setter Property="ItemTemplate">
<Setter.Value>
<ItemContainerTemplate>
<Grid>
<TextBox Width="100" Height="20" Text={Binding AttributeName}/>
</Grid>
</ItemContainerTemplate>
</Setter.Value>
</Setter>
</Style>
在上面的代码片段中将PropertyName
替换为DeviceAttributes
成员