对嵌套网格可见性的依赖性 属性?
Dependency Property to nested grid visibility?
我有一个显示地图控件的视图:
<controls:OnlineMapControl
x:Name="OnlineMapControl"
PanVisibility="Collapsed"
Margin="0,-5,0,0"
Background="{DynamicResource DocumentAreaBrush}">
</controls:OnlineMapControl>
在我的 OnlineMapControl 用户控件中,代码包含另一个用户控件。我正在尝试设置此辅助控件的可见性:
<onlineMapControls:NavigationControls Map="{Binding ElementName=tileCanvas}" Visibility="{Binding PanVisibility, RelativeSource={RelativeSource TemplatedParent}}" />
在 OnlineMapControl 的隐藏代码中,我暴露了一个依赖关系 属性:
/// <summary>
/// Identifies the PanVisibility dependency property.
/// </summary>
public static readonly DependencyProperty PanVisibilityProperty =
DependencyProperty.Register("PanVisibility", typeof(Visibility), typeof(OnlineMapControl));
/// <summary>
/// Gets or sets the PanVisibility.
/// </summary>
public Visibility PanVisibility
{
get { return (Visibility)GetValue(PanVisibilityProperty); }
set { SetValue(PanVisibilityProperty, value); }
}
在我看来,我收到“成员 'PanVisibility' 未被识别或无法访问”我在这里做错了什么?
TemplatedParent 只能在 ControlTemplate 中使用,根据您的说法,您没有定义任何 ControlTemplate,只是定义了 UserControl 的内容。您应该使用 FindAncestor 模式:
Visibility="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type controls:OnlineMapControl}}, Path=PanVisibility}"
我有一个显示地图控件的视图:
<controls:OnlineMapControl
x:Name="OnlineMapControl"
PanVisibility="Collapsed"
Margin="0,-5,0,0"
Background="{DynamicResource DocumentAreaBrush}">
</controls:OnlineMapControl>
在我的 OnlineMapControl 用户控件中,代码包含另一个用户控件。我正在尝试设置此辅助控件的可见性:
<onlineMapControls:NavigationControls Map="{Binding ElementName=tileCanvas}" Visibility="{Binding PanVisibility, RelativeSource={RelativeSource TemplatedParent}}" />
在 OnlineMapControl 的隐藏代码中,我暴露了一个依赖关系 属性:
/// <summary>
/// Identifies the PanVisibility dependency property.
/// </summary>
public static readonly DependencyProperty PanVisibilityProperty =
DependencyProperty.Register("PanVisibility", typeof(Visibility), typeof(OnlineMapControl));
/// <summary>
/// Gets or sets the PanVisibility.
/// </summary>
public Visibility PanVisibility
{
get { return (Visibility)GetValue(PanVisibilityProperty); }
set { SetValue(PanVisibilityProperty, value); }
}
在我看来,我收到“成员 'PanVisibility' 未被识别或无法访问”我在这里做错了什么?
TemplatedParent 只能在 ControlTemplate 中使用,根据您的说法,您没有定义任何 ControlTemplate,只是定义了 UserControl 的内容。您应该使用 FindAncestor 模式:
Visibility="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type controls:OnlineMapControl}}, Path=PanVisibility}"