Chr*_*col 4 wpf xaml binding dependency-properties
我有两个userControls(IconUserControl和DisplayUserControl),我遇到了绑定依赖项属性的问题,这里有一些细节:
在XAML中我有:
<local:DisplayUserControl
x:Name="DisplayUserControl"
IsDisplayShown="{Binding ElementName=IconUserControl, Path=IsDisplayShown, Converter={StaticResource DummyConverter}}" />
<local:IconUserControl
x:Name="IconUserControl" />
Run Code Online (Sandbox Code Playgroud)
当IconUserControl.IsDisplayShown设置为true时,我可以在DummyConverter中看到这个值被传递,但它从不设置DisplayUserControl.IsDisplayShown.
但是,如果在View I设置的代码隐藏中DisplayUserControl.IsDisplayShown = true;,那么它可以正常工作.
我有两个UserControls的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));
Run Code Online (Sandbox Code Playgroud)
这应该对你有帮助,但可能无法解决整个问题.不过,这是一个很好的起点.添加此代码将导致绑定的调试信息转储到Visual Studio中的"调试"窗口.
将此命名空间添加到您的xaml ....
xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"
Run Code Online (Sandbox Code Playgroud)
然后,你的绑定,添加这个:
diagnostics:PresentationTraceSources.TraceLevel=High
Run Code Online (Sandbox Code Playgroud)
查看Bea Stollnitz文章了解更多信息
| 归档时间: |
|
| 查看次数: |
2123 次 |
| 最近记录: |