为简单起见,我有一个名为DetailArea的控件
<UserControl x:Class="DetailArea">
<Grid>
<CustomDataControl x:Name="MyDataControl" />
</Grid>
</UserControl>
在另一个控件中,我使用我的DetailArea
<UserControl x:Class="Display">
<Grid>
<DetailArea />
</Grid>
</UserControl>
DetailArea控件中的CustomDataControl具有公共的可视性依赖项属性,就像我希望能够设置为“隐藏”的所有UI元素属性一样。
如何从显示控件中执行此操作?
编辑:我无法修改DetailArea wpf或代码,因为它位于另一个我无法控制的位置。
答案 0 :(得分:1)
根据您在评论中的答案,我建议您应用一种仅影响所提到的控件的样式。像这样
<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"
,因为该样式可能无法正确应用,详细信息请参见here(感谢@Jack)。
答案 1 :(得分:0)
我无法修改DetailArea wpf或代码,因为它位于另一个我无法控制的位置。
然后您不能使用XAML设置CustomDataControl
的属性。
您应该做的是将添加依赖项属性添加到DetailArea
类,并将Visibility
的{{1}}属性绑定到该类。然后,您可以在CustomDataControl
Display
中设置此属性:
UserControl
如果由于某种原因无法修改<DetailArea Visibility="Collapsed" />
,则必须以编程方式设置属性,例如:
DetailsArea