【发布时间】:2014-03-21 04:58:03
【问题描述】:
我正在写一个附加的行为
public class resizingBehavior : Behavior<ItemsControl>
确定树视图中可见项目的数量。
在 OnAttached 方法中
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.Loaded += AssociatedObject_Loaded;
}
AssociatedObject.Loaded 事件处理程序内部
我正在为我的树视图控件挂钩一个大小更改的事件处理程序
private void AssociatedObject_Loaded(object sender, RoutedEventArgs e)
{
var itemsControl = (ItemsControl)sender;
_sizeChangedEventHandler = (s, f) => ComputeVisibleItemsCount(itemsControl);
var treeListView = AssociatedObject as TreeListView;
treeListView.SizeChanged += _sizeChangedEventHandler;
itemsControl.Loaded -= AssociatedObject_Loaded;
}
当我加载我的应用程序和调整我的树视图大小时,会调用这些事件。我的问题在于树视图内可见项目的计算。不幸的是 IsVisible 属性没有给我正确的结果。我使用了In WPF, how can I determine whether a control is visible to the user?中建议的答案
但这似乎对我不起作用。它给了我一个错误的结果。
确定项目控件中实际可见项目的任何良好做法或标准解决方案?调整大小和滚动时?顺便说一句,我正在为我的树视图项目使用响应式集合。
【问题讨论】: