WPF绑定不到父控件属性
程序员文章站
2022-06-08 17:15:06
...
原因:
如果A控件并不是属于visual tree的部分,那么他不能连接到他父控件的datacontext,也就不能绑定到父控件的属性
解决方案:
使用一个Freezable做代理
public class BindingProxy : Freezable
{
#region Overrides of Freezable
protected override Freezable CreateInstanceCore()
{
return new BindingProxy();
}
#endregion
public object Data
{
get { return (object)GetValue(DataProperty); }
set { SetValue(DataProperty, value); }
}
// Using a DependencyProperty as the backing store for Data. This enables animation, styling, binding, etc...
public static readonly DependencyProperty DataProperty =
DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy), new UIPropertyMetadata(null));
}
然后在XML文件中添加静态资源,将代理的Data绑定为父控件
<UserControl.Resources>
<ResourceDictionary>
<pubEntity:BindingProxy x:Key="Proxy" Data="{Binding}" />
</ResourceDictionary>
</UserControl.Resources>
最后在A控件中,通过静态资源的Data来绑定父控件的属性
Command="{Binding Data.DownLoadCommand,Source={StaticResource Proxy}}"
上一篇: Linux如何实现断点续传文件功能
推荐阅读
-
WPF控件操作之改变父控件之TabControl示例
-
C# WPF Image控件的绑定方法
-
Vue input控件通过value绑定动态属性及修饰符的方法
-
WPF中ComboBox控件绑定键值对操作
-
WPF中Border控件属性介绍
-
WPF中listview控件绑定右键菜单命令
-
WPF ContextMenu右键菜单和控件的DataContext进行绑定的最佳实践
-
WPF布局控件与子控件的HorizontalAlignment/VerticalAlignment属性之间的关系
-
js中window对象的opener属性的笔记——opener在谷歌浏览器获取不到父窗口引用的原因
-
WPF属性绑定实现双向变化