2015-10-05 78 views
0

我試圖以編程方式創建一個彈出按鈕,我的XAML中我有:元素已經是另一個元素的時候犯規存在的孩子呢?

<Page.Resources> 
    <Button x:Key="LaunchFlyout" Content="LAUNCH"> 
     <Button.Flyout> 
      <Flyout Placement="Top"> 
       <Grid Width="200" Height="200"> 
        <StackPanel> 
         <Rectangle Fill="Red" Width="100" Height="100" /> 
         <Rectangle Fill="Green" Width="100" Height="100" /> 
        </StackPanel> 
       </Grid> 
      </Flyout> 
     </Button.Flyout> 
    </Button> 
</Page.Resources> 

grids嵌套我:

<Grid x:Name="launchBtn_grid" Grid.Column="1"> 
</Grid> 

然後在我的代碼Page_Loaded方法我有內:

bool hasContainer = localSettings.Containers.ContainsKey("appStatus"); 

if (!hasContainer) { 
    Button button = (Button)this.Resources["LaunchFlyout"]; 
    launchBtn_grid.Children.Add(button); 
} 
else { 
    Button button = new Button(); 
    button.Content = "LAUNCH"; 
    button.Click += launch_btn_Click; 
    launchBtn_grid.Children.Add(button); 
} 

當我調試這個,它到達IF語句,並達到這一行launchBtn_grid.Children.Add(button);,然後我得到這個錯誤元素已經是另一個元素的孩子。

有誰知道爲什麼嗎?我已經看過,他們不存在,所以我不明白爲什麼它給了我這個錯誤。有誰知道我做錯了什麼?

+0

當異常被拋出,什麼是'button.Parent'? –

+0

@BenVoigt它說它是空的? – KTOV

回答

0

我不確定你在做什麼上下文/用例,但我覺得有一個實際的控制作爲Resource(而不是DataTemplate,Style等)的奇怪。

如果你只是想有2種不同的模板1個按鈕,爲什麼不接通2,而不是裝載控制從後面的代碼Visibility

繼續這個想法,只需在您的XAML中的Grid中添加兩個按鈕,並根據您閱讀的設置切換其Visibility

框架內有一個BooleanToVisibilityConverter來幫助你做到這一點。

相關問題