在 wpf 中从子项控件中设置属性



为了简单起见,假设我有一个名为 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类中,并将CustomDataControlVisibility属性绑定到该类。然后,您可以在DisplayUserControl中设置此属性:

<DetailArea Visibility="Collapsed" />

如果由于某种原因无法修改DetailsArea,则必须以编程方式设置属性,例如:

detailArea.MyDataControl.Visibility = Visibility.Collapsed;

相关内容

  • 没有找到相关文章

最新更新