是否可以防止带有x:Name的XAML元素在定义它的类之外可访问?

Mat*_*hew 1 .net c# wpf xaml scope

假设我有一个带标签的控件,我希望能够从代码隐藏引用该标签.我可以通过给标签x:Name:

<UserControl x:Class=...>
    <Label x:Name="someLabel">Foo</Label>
    ....
</UserControl>
Run Code Online (Sandbox Code Playgroud)

不幸的是,现在我可以在另一个班级做到这一点:

`someUserControl.someLabel.Content = ...`
Run Code Online (Sandbox Code Playgroud)

有没有办法限制对Label定义它的类的访问?也就是说,我仍然可以在UserControl的代码隐藏中引用它,但其他地方都没有.

Cod*_*ked 5

默认情况下,它们将是内部的,文档说您可以使用x:FieldModifier属性将其公开.无论文档说什么,你都可x:FieldModifier="private"以为C#做私有的.