WPF 绑定到 ItemsControl 的 ItemsPanel 的 属性
WPF bind to property of the ItemsPanel of an ItemsControl
我在下面写了一个代码示例:
<StackPanel>
<TextBlock>Appointments today</TextBlock>
<ItemsControl ItemsSource="{Binding Appointments}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<controls:CalendarMonthDayEventsItemsPanel OutsideViewportCount="..." />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border>
<TextBlock Text="{Binding Title}" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<StackPanel Orientation="Horizontal">
<TextBlock>+</TextBlock>
<TextBlock Text="{Binding ......}" /> <!-- Should show number of items in ItemsControl that are outside view, using CalendarMonthDayEventsItemsPanel.OutsideViewportCount -->
<TextBlock>more items</TextBlock>
</StackPanel>
</StackPanel>
我创建了一个自定义面板 CalendarMonthDayEventsItemsPanel
,并将该面板用作 ItemsControl
的项目面板。在面板的布局代码中,我确定有多少项(面板子项)在面板边界之外。 属性 OutsideViewportCount
包含 CalendarMonthDayEventsItemsPanel
.
可见范围之外的项目数
现在我想在 ItemsControl
下方的 TextBlock
中显示 OutsideViewportCount
的值。
这意味着我必须创建某种绑定,但我尝试的所有方法都不起作用。
有人有解决方案或更好的方法来达到相同的结果吗?
也许您可以使用 Tag
属性 或 ItemsPanel
来传递 ItemsPanel 的值作为解决方法。
<ItemsControl x:Name="A"
ItemsSource="{Binding Appointments}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<local:CalendarMonthDayEventsItemsPanel OutsideViewportCount="{Binding RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}, Path=Tag, Mode=OneWayToSource}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
...
</ItemsControl>
<StackPanel Orientation="Horizontal">
<TextBlock>+</TextBlock>
<TextBlock Text="{Binding ElementName=A, Path=Tag, Mode=OneWay}"/>
<TextBlock>more items</TextBlock>
</StackPanel>
我在下面写了一个代码示例:
<StackPanel>
<TextBlock>Appointments today</TextBlock>
<ItemsControl ItemsSource="{Binding Appointments}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<controls:CalendarMonthDayEventsItemsPanel OutsideViewportCount="..." />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border>
<TextBlock Text="{Binding Title}" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<StackPanel Orientation="Horizontal">
<TextBlock>+</TextBlock>
<TextBlock Text="{Binding ......}" /> <!-- Should show number of items in ItemsControl that are outside view, using CalendarMonthDayEventsItemsPanel.OutsideViewportCount -->
<TextBlock>more items</TextBlock>
</StackPanel>
</StackPanel>
我创建了一个自定义面板 CalendarMonthDayEventsItemsPanel
,并将该面板用作 ItemsControl
的项目面板。在面板的布局代码中,我确定有多少项(面板子项)在面板边界之外。 属性 OutsideViewportCount
包含 CalendarMonthDayEventsItemsPanel
.
现在我想在 ItemsControl
下方的 TextBlock
中显示 OutsideViewportCount
的值。
这意味着我必须创建某种绑定,但我尝试的所有方法都不起作用。 有人有解决方案或更好的方法来达到相同的结果吗?
也许您可以使用 Tag
属性 或 ItemsPanel
来传递 ItemsPanel 的值作为解决方法。
<ItemsControl x:Name="A"
ItemsSource="{Binding Appointments}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<local:CalendarMonthDayEventsItemsPanel OutsideViewportCount="{Binding RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}, Path=Tag, Mode=OneWayToSource}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
...
</ItemsControl>
<StackPanel Orientation="Horizontal">
<TextBlock>+</TextBlock>
<TextBlock Text="{Binding ElementName=A, Path=Tag, Mode=OneWay}"/>
<TextBlock>more items</TextBlock>
</StackPanel>