绑定时不显示文本框
本文关键字:文本 显示 定时 绑定 | 更新日期: 2023-09-27 17:50:14
我很难与一个简单的文本框不显示我想要的东西。基本上我有一个分组列表框从这个数据文件xml:
<Hosts>
<Host foo="aaa">
<usable>1</usable>
</Host>
<Host foo="bbb">
<usable>1</usable>
</Host>
</Hosts>
我有下面的代码:
<CollectionViewSource x:Key="cvs"
Source="{Binding Source={StaticResource HostsData}}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="@foo" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
<DataTemplate x:Key="categoryTemplate">
<TextBlock Text="test"
FontWeight="Bold"
Background="Gold"
Margin="0,5,0,0" />
</DataTemplate>
...
<ListBox Name="myList"
Grid.Row="0"
Grid.Column="1"
TextBlock.FontSize="9"
Margin="2"
ItemsSource="{Binding Source={StaticResource cvs}}"
ItemTemplate="{StaticResource MachinesTemplate}">
<ListBox.GroupStyle>
<GroupStyle HeaderTemplate="{StaticResource categoryTemplate}" />
</ListBox.GroupStyle>
</ListBox>
所以我有我的分组列表框,但是testbox的内容是空的。它是"gold",如果我设置Text="test",它就会像它应该的那样被保留,但我不能让它显示"foo"内容(aaa, bbb)。
我尝试了所有的绑定方式,但都没有成功。
要获得匹配属性的文本,您需要绑定到GroupStyle HeaderTemplate中的Name属性:
<TextBlock Text="{Binding Path=Name}" ... />
实现这一点的前提是所有xpath都能正常工作,这是另一个问题。下面是一个完整的简化示例,其中包含代码中的相关部分:
<Grid>
<Grid.Resources>
<XmlDataProvider x:Key="HostsData"
XPath="//Host">
<x:XData>
<Hosts xmlns="">
<Host foo="aaa">
<usable>1</usable>
</Host>
<Host foo="bbb">
<usable>1</usable>
</Host>
</Hosts>
</x:XData>
</XmlDataProvider>
<CollectionViewSource x:Key="cvs"
Source="{Binding Source={StaticResource HostsData}}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="@foo" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
<DataTemplate x:Key="categoryTemplate">
<TextBlock Text="{Binding Path=Name}"
FontWeight="Bold"
Background="Gold"
Margin="0,5,0,0" />
</DataTemplate>
</Grid.Resources>
<ListBox Name="myList"
ItemsSource="{Binding Source={StaticResource cvs}}">
<ListBox.GroupStyle>
<GroupStyle HeaderTemplate="{StaticResource categoryTemplate}" />
</ListBox.GroupStyle>
</ListBox>
</Grid>