使用 x:FieldModifier 將控制項內的元件更改為 public
經常遇到一個情境是外部程式碼想要使用某個控制項內的控制項,該怎麼做呢
舉例如下
<Page
x:Class="MainPage"
...>
<TextBlock x:Name="InsideTextBlock"/>
</Page>
public class OutsideClass
{
public OutsideClass()
{
MainPage mainPage = new MainPage();
// 這一行會出錯,因為 MainPage.InsideTextBlock 是 private field
TextBlock insideTextBlock = mainPage.InsideTextBlock;
}
}
當 OutsideClass 想要存取 MainPage 內的 InsideTextBlock 時,由於 InsideTextBlock 為 private field 而無法存取
此時
只要在 InsideTextBlock 內加上 x:FieldModifier="public",即可將 InsideTextBlock 由 private field 更改為 public field
如此一來,OutsideClass 便可直接存取 InsideTextBlock
<TextBlock x:Name="InsideTextBlock" x:FieldModifier="public" />