为简单起见,我说这个名为DetailArea的控件
<UserControl x:Class="DetailArea">
<Grid>
<CustomDataControl x:Name="MyDataControl" />
</Grid>
</UserControl>
在另一个控件中我使用了我的DetailArea
<UserControl x:Class="Display">
<Grid>
<DetailArea />
</Grid>
</UserControl>
DetailArea控件中的CustomDataControl具有公共Visibility依赖项属性,就像我希望能够设置为Hidden的所有UI元素属性一样。
如何从Display控件中执行此操作?
编辑:我无法修改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}"
is可选。
编辑我删除了x:Key="MakeInvisible"
,因为样式可能无法正确应用,详情请参阅here(致@Jack)。
我无法修改DetailArea wpf或代码,因为它在另一个我无法控制的地方。
然后你不能使用XAML设置CustomDataControl
的属性。
你应该做的是将添加依赖属性添加到DetailArea
类并将Visibility
的CustomDataControl
属性绑定到此属性。然后,您可以在Display
UserControl
中设置此属性:
<DetailArea Visibility="Collapsed" />
如果由于某种原因无法修改DetailsArea
,则必须以编程方式设置属性,例如:
detailArea.MyDataControl.Visibility = Visibility.Collapsed;