ListBox中的WPF数据绑定错误
我有一个ListBox中的WPF数据绑定错误,wpf,data-binding,binding,listbox,ivalueconverter,Wpf,Data Binding,Binding,Listbox,Ivalueconverter,我有一个列表框: <ListBox x:Name="HistogramListBox" Grid.Column="1" Margin="8,2,8,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Template="{StaticResource HistogramListBoxControlTemplate}" ItemContainerStyle="{Stat
列表框
:
<ListBox x:Name="HistogramListBox" Grid.Column="1" Margin="8,2,8,0"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Template="{StaticResource HistogramListBoxControlTemplate}"
ItemContainerStyle="{StaticResource HistogramListBoxItem}"
ItemTemplate="{DynamicResource BucketTemplate}" />
列表框是一个int[]
当我执行代码时,它说在Int32上找不到“ItemCount”。我以为它从列表框中得到了物品数量(我显然错了)
有人能告诉我如何让我的ValueConverter
知道我在使用什么项目吗
谢谢
Dan数据模板中项的数据上下文是数据项本身,它是一个int
。如果要在列表框中创建属性,则需要访问当前上下文之外的内容。您可以使用相对资源来执行此操作:
{Binding Items.Count, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}
您可以在绑定时尝试以下操作:
<Binding Path="Items.Count">
<Binding.RelativeSource>
<RelativeSource AncestorType="{x:Type ListBox}" />
</Binding.RelativeSource>
</Binding>
假设第一个转换器参数是图表中的实际值,第二个是直方图对象:
<Rectangle.Height>
<MultiBinding Converter="{StaticResource HistogramValueToPercentageConverter}">
<Binding />
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type local:Histogram}}" />
</MultiBinding>
</Rectangle.Height>
这是因为DataContext本身就是整数,至少在您给出的错误消息中是这样
顺便说一下,您通常会使用绑定而不是代码隐藏来设置ListBox的ItemsSource。这使得UI和代码的分离更加清晰。我注意到您的示例代码中没有显示任何ItemsSource=
,所以我想我应该提到这一点。我非常确定ListBox没有ItemCount属性,对吗?@Drew:true。我刚刚复制了OP。更新了我的post.Items.Count,它给出了项目总数。我正在列表框中查找它当前所在的项目。谢谢
<Rectangle.Height>
<MultiBinding Converter="{StaticResource HistogramValueToPercentageConverter}">
<Binding />
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type local:Histogram}}" />
</MultiBinding>
</Rectangle.Height>