UserControl上绑定依赖属性的问题

时间:2010-01-12 19:34:05

标签: wpf xaml binding dependency-properties

我有两个userControls(IconUserControl& DisplayUserControl),我遇到了绑定依赖项属性的问题,这里有一些细节:

  • IconUserControl具有IsDisplayShown的bool DP
  • DisplayUserControl的bool DP为IsDisplayShown

在XAML中我有:

<local:DisplayUserControl
                    x:Name="DisplayUserControl"
                    IsDisplayShown="{Binding ElementName=IconUserControl, Path=IsDisplayShown, Converter={StaticResource DummyConverter}}" />

<local:IconUserControl
                    x:Name="IconUserControl" />

当IconUserControl.IsDisplayShown设置为true时,我可以在DummyConverter中看到此值被传递,但它从不设置DisplayUserControl.IsDisplayShown。

但是,如果在View I的代码隐藏中设置DisplayUserControl.IsDisplayShown = true;,那么它可以正常工作。

我将UserControl的DataContext设置为构造函数中的“this”。我试图摆弄绑定的“模式”属性。

*注意:DummyConverter只返回值,我只有这个来确认Binding是否正在尝试工作。

我做错了什么?

编辑:

这是两个DP:

public bool IsDisplayShown
        {
            get { return (bool)GetValue(IsDisplayShownProperty); }
            set { SetValue(IsDisplayShownProperty, value); }
        }
        public static readonly DependencyProperty IsDisplayShownProperty =
            DependencyProperty.Register("IsDisplayShown", typeof(bool), typeof(IconUserControl), new UIPropertyMetadata(false));

public bool IsDisplayShown
        {
            get { return (bool)GetValue(IsDisplayShownProperty); }
            set
            {
                if (value)
                    ShowOpenItems();
                else
                    HideOpenItems();
                SetValue(IsDisplayShownProperty, value);
            }
        }
        public static readonly DependencyProperty IsDisplayShownProperty=
            DependencyProperty.Register("IsDisplayShown", typeof(bool), typeof(DisplayUserControl), new UIPropertyMetadata(false));

2 个答案:

答案 0 :(得分:5)

这对你有所帮助,但可能无法解决整个问题。不过,这是一个很好的起点。添加此代码将导致绑定的调试信息转储到Visual Studio中的“调试”窗口。

将此命名空间添加到您的xaml ....

xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"

然后,你的绑定,添加这个:

diagnostics:PresentationTraceSources.TraceLevel=High

查看Bea Stollnitz文章了解更多信息

答案 1 :(得分:0)

这没有意义=)应该工作=)

您是否尝试在绑定中设置Mode = TwoWay? 你确定你的DP定义合适吗?你能把它们添加到帖子中吗?