作为将DataContext与WPF中的另一个属性链接的问题的延续.
在研究的最后,我非常惊讶地发现当一个人写这样的东西时:
<Label Content="{Binding Path=Name}" />
Run Code Online (Sandbox Code Playgroud)
在DataContext其对Content性能的绑定是的Label控制本身!它仍然有效的事实是由于最近父级的DataContext值的默认继承.
但是,如果您将此标签包装在自定义控件中,并且您不希望将数据绑定到该DataContext控件的属性,那么您可能更喜欢:
<Controls:SearchSettings Settings="{Binding Path=Settings}" />
Run Code Online (Sandbox Code Playgroud)
你在这里.现在,你需要设置Settings为DataContext为SearchSettings控制,对Label内部绑定反对,但你不能,因为这会触发重新绑定的Settings属性.
我看不到在使用不同来源的混合绑定属性点:DataContext通过ElementName等,那么,为什么我会永远使用DataContext?
前提:
我有一个内置iframe的aspx页面.这个iframe指向MVC在同一站点(它的混合站点,标准ASP.NET和ASP.NET MVC)处理的url.由MVC呈现的结果页面包含许多脚本引用.
问题:
IE9在iframe中加载的每个脚本上抛出一个异常.这些例外与此类似:
Error: 'Function' is undefined
Run Code Online (Sandbox Code Playgroud)
也就是说,它说每个窗口最基本的东西都不存在.一旦您点击了所有这些弹出窗口,页面就会按设计工作!
如果我<iframe />直接从浏览器中的src属性加载URL ,一切都按预期工作.
如果我在另一个浏览器中打开页面(我试过Opera,Firefox),一切都按预期工作 - 没有错误.
那么,IE9想要什么?
javascript model-view-controller asp.net-mvc iframe internet-explorer-9
我声明了一个依赖属性FrameworkPropertyMetadataOptions.Inherits:
public static class DesignerItemStyles {
public static readonly DependencyProperty HeaderBackgroundProperty =
DependencyProperty.RegisterAttached(
"HeaderBackground", typeof(Brush), typeof(DesignerItemStyles),
new FrameworkPropertyMetadata(
Brushes.DesignerViewElementHeaderBackground,
FrameworkPropertyMetadataOptions.Inherits));
/* Below are Get & Set as usual */
}
Run Code Online (Sandbox Code Playgroud)
它有点工作,但不知何故不是整个视觉树.这是一个截图,显示ContentPresenter从HeaderedDesignerItemChrome以下位置继承值:

现在,屏幕截图显示了内容,ContentPresenter并没有继承该值.它也没有被设置为其他东西 - 它是默认值:

知道为什么吗?
我花了2个小时试图弄清楚为什么在将控件从解决方案A移动到解决方案B(以及它的样式)后,控件停止显示(控件模板未应用).原来我忘了覆盖默认样式键.这是一个问题:为什么它适用于解决方案A?
在DesignerView.cs中:
public class DesignerView : Control {
// No DefaultStyleKeyProperty.OverrideMetadata here
}
Run Code Online (Sandbox Code Playgroud)
在Generic.xaml中:
<Style TargetType="{x:Type controls:DesignerView}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type controls:DesignerView}">
<TextBlock Text="Hello" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
当然,我的风格比这复杂一点,但无论如何:完全相同的控件(类+样式,没有正确的DefaultStyleKeyProperty集)确实出现在解决方案A中,但没有出现在解决方案B中.