如何在XAML中绑定listview的项目数
我在将计数绑定到文本块时遇到问题 我有一个listview,它的项目绑定到用户对象属性。 我想获得所有绑定的项目的计数 这是我的列表视图:如何在XAML中绑定listview的项目数,xaml,binding,Xaml,Binding,我在将计数绑定到文本块时遇到问题 我有一个listview,它的项目绑定到用户对象属性。 我想获得所有绑定的项目的计数 这是我的列表视图: <ListView ItemsSource="{Binding Users}" x:Name="lvUsers"> <ListView.ItemTemplate> <DataTemplate> <ListViewItem IsHitTestVisible="False"
<ListView ItemsSource="{Binding Users}" x:Name="lvUsers">
<ListView.ItemTemplate>
<DataTemplate>
<ListViewItem IsHitTestVisible="False">
<StackPanel>
<facebookControls:ProfilePicture Height="74" Width="74" ProfileId="{Binding FacebookId}" />
<TextBlock Text="{Binding UserName}" FontSize="18" HorizontalAlignment="Center" />
</StackPanel>
</ListViewItem>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
这是我的文本块:
<TextBlock Text="{Binding ElementName=lvUsers, Path=Items.Count, Mode=OneWay}" />
我做错了什么
我知道如果我的ListView没有模板,只有ListViewItems,它就会工作,但我需要它像这样。覆盖此
ListView的模板。
下面的示例基本上创建了一种样式,它覆盖了控件模板,这样常规的ListView
项(ItemsPresenter
)被包装在StackPanel
中,这样TextBlock
就可以在底部添加count或其他内容
<ListView ItemsSource="{Binding Users}">
<ListView.Style>
<Style TargetType="{x:Type ListView}">
<Style.Setters>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="1" BorderBrush="LightGray">
<StackPanel>
<ScrollViewer>
<ItemsPresenter />
</ScrollViewer>
<TextBlock Margin="0,4" FontWeight="Bold">
<Run Text="Count: "/>
<Run Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}}, Path=Items.Count, Mode=OneWay}"/>
</TextBlock>
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</ListView.Style>
<ListView.ItemTemplate>
<DataTemplate>
<ListViewItem IsHitTestVisible="False">
<StackPanel>
<facebookControls:ProfilePicture Height="74" Width="74" ProfileId="{Binding FacebookId}" />
<TextBlock Text="{Binding UserName}" FontSize="18" HorizontalAlignment="Center" />
</StackPanel>
</ListViewItem>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
谢谢,但代码仍然不起作用。问题是ListView中的ListViewItems,我如何修复它?项目非常大,我无法修复,但代码在页面顶部的第一条语句中…如果您试图将ListView放在另一个ListView中,您需要做的是覆盖第二个ListView的模板。使用blend将其提取出来,我打赌(根据使用各种数据网格的经验,我现在对ListView的记忆很差)在控件模板中,你会发现一个网格
,你可以在那里添加额外的行,在该额外行中放置文本块
,以便它可以显示为ListView的一部分。你让我工作,康拉德!!!嗯,我已经发布了一个更新的模板,经过测试,这是有效的。。。祝你好运哦,好吧,在您命名为listview