- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
DataContextChanged 没有在我的自定义 Panel 控件的逻辑子项上引发问题。我把它缩小到这个:
从我添加的向导生成的 WPF 应用程序开始:
private void Window_Loaded( object sender, RoutedEventArgs e )
{
var elt = new FrameworkElement();
this.AddLogicalChild( elt );
DataContext = 42;
Debug.Assert( (int)elt.DataContext == 42 );
}
据我了解,这是可行的,因为 DataContext 是 inheritable dependency property .
现在,我在 Window (this) 及其逻辑子级上为 DataContextChanged 添加事件处理程序:
this.DataContextChanged +=
delegate { Debug.WriteLine( "this:DataContextChanged" ); };
elt.DataContextChanged +=
delegate { Debug.WriteLine( "elt:DataContextChanged" ); };
如果我运行它,只有第一个事件处理程序会执行。 为什么会这样?如果不是 AddLogicalChild(elt) 我执行以下操作:
this.Content = elt;
两个处理程序都会执行。但在我的情况下,这不是一个选项 - 我将 FrameworkContentElements 添加到我的控件中,这些控件不应该是可视子项。
这里发生了什么?除了 AddLogicalChild() 之外,我还应该做更多的事情来使它工作吗?
(幸运的是,有一个相当简单的解决方法 - 只需将元素的 DataContext 绑定(bind)到窗口的 DataContext )
BindingOperations.SetBinding( elt, FrameworkElement.DataContextProperty,
new Binding( "DataContext" ) { Source = this } );
谢谢。
最佳答案
您也需要覆盖 LogicalChildren
属性:
protected override System.Collections.IEnumerator LogicalChildren
{
get { yield return elt; }
}
当然,您也希望返回由基本实现定义的任何逻辑子代。
关于WPF:为什么 DataContextChanged 没有在逻辑 child 上提出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/723655/
我正在使用 Gunicorn 为 Django 应用程序提供服务,它工作正常,直到我将其超时时间从 30 秒更改为 900000 秒,我不得不这样做,因为我有一个用例需要上传和处理一个巨大的文件(过程
我有一个带有非常基本的管道的Jenkinsfile,它可以旋转docker容器: pipeline { agent { dockerfile { args '-u root' } } stag
在学习 MEAN 堆栈的过程中,我遇到了一个问题。每当我尝试使用 Passport 验证方法时,它都不会返回任何响应。我总是收到“localhost没有发送任何数据。ERR_EMPTY_RESPONS
在当今的大多数企业堆栈中,数据库是我们存储所有秘密的地方。它是安全屋,是待命室,也是用于存储可能非常私密或极具价值的物品的集散地。对于依赖它的数据库管理员、程序员和DevOps团队来说,保护它免受所
是否可以创建像图片上那样的边框?只需使用 css 边框属性。最终结果将是没 Angular 盒子。我不想添加额外的 html 元素。我只想为每个 li 元素添加 css 边框信息。 假设这是一个 ul
我是一名优秀的程序员,十分优秀!