小编Eug*_*hok的帖子

什么是DataContext?

作为将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)

你在这里.现在,你需要设置SettingsDataContextSearchSettings控制,对Label内部绑定反对,但你不能,因为这会触发重新绑定的Settings属性.

我看不到在使用不同来源的混合绑定属性点:DataContext通过ElementName等,那么,为什么我会永远使用DataContext

data-binding wpf

33
推荐指数
1
解决办法
5万
查看次数

在iframe中加载脚本时,IE9会抛出异常.为什么?

前提:

我有一个内置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

27
推荐指数
1
解决办法
1万
查看次数

不继承依赖属性值

我声明了一个依赖属性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)

它有点工作,但不知何故不是整个视觉树.这是一个截图,显示ContentPresenterHeaderedDesignerItemChrome以下位置继承值: 继承值的节点

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

知道为什么吗?

wpf dependency-properties

4
推荐指数
2
解决办法
3506
查看次数

什么时候需要覆盖DefaultStyleKey?

我花了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中.

wpf custom-controls

3
推荐指数
1
解决办法
3588
查看次数