我有两个userControls(IconUserControl& DisplayUserControl),我遇到了绑定依赖项属性的问题,这里有一些细节:
在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));
答案 0 :(得分:5)
这对你有所帮助,但可能无法解决整个问题。不过,这是一个很好的起点。添加此代码将导致绑定的调试信息转储到Visual Studio中的“调试”窗口。
将此命名空间添加到您的xaml ....
xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"
然后,你的绑定,添加这个:
diagnostics:PresentationTraceSources.TraceLevel=High
查看Bea Stollnitz文章了解更多信息
答案 1 :(得分:0)
这没有意义=)应该工作=)
您是否尝试在绑定中设置Mode = TwoWay? 你确定你的DP定义合适吗?你能把它们添加到帖子中吗?