WPF的DependencyPropertyListener()
我想运营一个计划用于WPF的windows phone项目。 以下是链接: 通过重复代码,我发现WPF不知道此方法中的DependencyPropertyListener():WPF的DependencyPropertyListener(),wpf,dependency-properties,Wpf,Dependency Properties,我想运营一个计划用于WPF的windows phone项目。 以下是链接: 通过重复代码,我发现WPF不知道此方法中的DependencyPropertyListener(): static void element_Loaded(object sender, RoutedEventArgs e) { FrameworkElement element = (FrameworkElement)sender; element.Loaded -= element_Loaded;
static void element_Loaded(object sender, RoutedEventArgs e)
{
FrameworkElement element = (FrameworkElement)sender;
element.Loaded -= element_Loaded;
ScrollViewer scrollViewer = FindChildOfType<ScrollViewer>(element);
if (scrollViewer == null)
{
throw new InvalidOperationException("ScrollViewer not found.");
}
var listener = new DependencyPropertyListener();
listener.Changed
+= delegate
{
bool atBottom = scrollViewer.VerticalOffset
>= scrollViewer.ScrollableHeight;
if (atBottom)
{
var atEnd = GetAtEndCommand(element);
if (atEnd != null)
{
atEnd.Execute(null);
}
}
};
Binding binding = new Binding("VerticalOffset") { Source = scrollViewer };
listener.Attach(scrollViewer, binding);
}
static void元素\u已加载(对象发送方、路由目标方)
{
FrameworkElement=(FrameworkElement)发送方;
element.Loaded-=element\u Loaded;
ScrollViewer ScrollViewer=FindChildOfType(元素);
如果(scrollViewer==null)
{
抛出新的InvalidOperationException(“未找到ScrollViewer”);
}
var listener=新的DependencyPropertyListener();
听众,改变了
+=代表
{
bool atBottom=scrollViewer.VerticalOffset
>=scrollViewer.ScrollableHeight;
如果(在底部)
{
var-atEnd=GetAtEndCommand(元素);
如果(atEnd!=null)
{
atEnd.Execute(null);
}
}
};
绑定绑定=新绑定(“垂直偏移量”){Source=scrollViewer};
附加(scrollViewer,绑定);
}
是否有办法绕过此对象?您可以使用
DependencyPropertyDescriptor
侦听依赖属性值的更改
static void element_Loaded(object sender, RoutedEventArgs e)
{
FrameworkElement element = (FrameworkElement)sender;
element.Loaded -= element_Loaded;
ScrollViewer scrollViewer = FindChildOfType<ScrollViewer>(element);
if (scrollViewer == null)
{
throw new InvalidOperationException("ScrollViewer not found.");
}
var dpd = DependencyPropertyDescriptor.FromProperty(ScrollViewer.VerticalOffsetProperty, typeof(ScrollViewer));
dpd.AddValueChanged(scrollViewer, delegate(object o, EventArgs args)
{
bool atBottom = scrollViewer.VerticalOffset
>= scrollViewer.ScrollableHeight;
if (atBottom)
{
var atEnd = GetAtEndCommand(element);
if (atEnd != null)
{
atEnd.Execute(null);
}
}
});
}
static void元素\u已加载(对象发送方、路由目标方)
{
FrameworkElement=(FrameworkElement)发送方;
element.Loaded-=element\u Loaded;
ScrollViewer ScrollViewer=FindChildOfType(元素);
如果(scrollViewer==null)
{
抛出新的InvalidOperationException(“未找到ScrollViewer”);
}
var dpd=DependencyPropertyDescriptor.FromProperty(ScrollViewer.VerticalOffsetProperty,typeof(ScrollViewer));
AddValueChanged(scrollViewer,委托(对象o,事件args args)
{
bool atBottom=scrollViewer.VerticalOffset
>=scrollViewer.ScrollableHeight;
如果(在底部)
{
var-atEnd=GetAtEndCommand(元素);
如果(atEnd!=null)
{
atEnd.Execute(null);
}
}
});
}