WPF - 我可以阻止UserControl公开其命名的子元素吗?

时间:2009-03-17 17:31:54

标签: wpf user-controls encapsulation

这是一个noob问题,但我刚刚意识到如果我创建一个UserControl并选择命名它的一些子元素la -

<UserControl x:Class="UserControls.uControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">
<Grid x:Name="maingrid">

</Grid>

然后我可以在消费XAML的代码隐藏中引用命名元素。所以对于上面的例子我可以写

uControl.mainGrid = new Grid();

我很好奇为什么会这样,更重要的是,我如何安全地封装这些控件。

像往常一样,任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

您想要的是x:FieldModifier属性:

<UserControl x:Class="UserControls.uControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="300" Height="300">
    <Grid x:Name="maingrid" x:FieldModifier="private">
    </Grid>
</UserControl>

由于某种原因,默认为内部。您可以阅读更多相关信息here