[XAML] 使用 x:FieldModifier 將控制項內的元件更改為 public

  • 294
  • 0
  • 2018-06-15

使用 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" />