2015-10-05 2 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 разных шаблонов, почему бы не переключить Visibility на 2 вместо загрузки элементов управления из вашего кода?

Следуя идее, просто добавьте обе кнопки в Grid в свой XAML и переключите их Visibility в соответствии с настройкой, которую вы читаете.

Внутри рамки есть BooleanToVisibilityConverter, чтобы помочь вам в этом.

Смежные вопросы

 Смежные вопросы