为了简单起见,假设我有一个名为 DetailArea 的控件
<UserControl x:Class="DetailArea">
<Grid>
<CustomDataControl x:Name="MyDataControl" />
</Grid>
</UserControl>
在另一个控件中,我使用我的详细信息区域
<UserControl x:Class="Display">
<Grid>
<DetailArea />
</Grid>
</UserControl>
DetailArea 控件中的 CustomDataControl 具有公共可见性依赖项属性,就像我希望能够设置为隐藏的所有 UI 元素属性一样。
如何从"显示"控件执行此操作?
编辑:我无法修改DetailArea wpf或代码,因为它在另一个我无法控制的所有内容中。
根据您在评论中的回答,我建议您应用仅影响上述控件的样式。像这样的东西
<UserControl x:Class="Display">
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type CustomDataControl}" BasedOn="{StaticResource KeyOfCustomDataControlStyle}">
<Setter Property="Visibility" Value="Hidden"/>
</Style>
</Grid.Resources>
<DetailArea />
</Grid>
</UserControl>
注意:这只是一个伪代码,请对其进行修改以匹配您的环境。
注意2:BasedOn="{StaticResource KeyOfCustomDataControlStyle}"
是可选的。
编辑我删除了x:Key="MakeInvisible"
,因为样式可能未正确应用,详细信息请参阅此处(致谢@Jack(。
我无法修改 DetailArea wpf 或代码,因为它在另一个我无法控制的地方。
然后,不能使用 XAML 设置CustomDataControl
的属性。
您应该做的是将 add 依赖项属性添加到DetailArea
类中,并将CustomDataControl
的Visibility
属性绑定到该类。然后,您可以在Display
UserControl
中设置此属性:
<DetailArea Visibility="Collapsed" />
如果由于某种原因无法修改DetailsArea
,则必须以编程方式设置属性,例如:
detailArea.MyDataControl.Visibility = Visibility.Collapsed;