2016-12-02 8 views
-2

Так что я полностью застрял. Все, что я пытаюсь сделать, это добавить кнопку вне сетки. Я получаю ошибку «Свойство„Содержание“может быть установлен только один раз.Добавить кнопку вне сетки-Wpf

Я пытаюсь сделать тральщик игру, которая конечно содержит сетку. А дополнительные функции, такие как перезапуск.

У меня есть попробовал добавить стекную панель (и различные другие контейнеры) вокруг сетки и кнопки, затем ошибка содержимого уходит, и я получаю новую ошибку ... «Необработанное исключение типа« System.ArgumentException »произошло в PresentationCore.dll

Дополнительная информация: Обязательно отключите указанный дочерний элемент от текущего родителя Visual перед подключением к новому родительскому Visual. "

Мне просто нужно знать, какой контейнер использовать, чтобы иметь кнопку и потенциально другие компоненты над сеткой.

<Window x:Class="MineSweeper.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:MineSweeper" 
    mc:Ignorable="d" 
    Title="MineSweeper" Height="500" Width="525"> 


    <Grid Name="oGrid" HorizontalAlignment="Left" Height="100" Margin="200,75,0,0" VerticalAlignment="Top" Width="100" Background="Transparent" PreviewMouseLeftButtonDown="oGrid_PreviewMouseLeftButtonDown" 
     PreviewMouseRightButtonDown="oGrid_PreviewMouseRightButtonDown"> 
    </Grid> 


    <Button x:Name="button" Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Canvas.Left="200" Canvas.Top="10"/> 

Вот что я пытался с StackPanel

<StackPanel> 
    <Grid Name="oGrid" HorizontalAlignment="Left" Height="100" Margin="200,75,0,0" VerticalAlignment="Top" Width="100" Background="Transparent" PreviewMouseLeftButtonDown="oGrid_PreviewMouseLeftButtonDown" 
     PreviewMouseRightButtonDown="oGrid_PreviewMouseRightButtonDown"> 
    </Grid> 


    <Button x:Name="button" Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Canvas.Left="200" Canvas.Top="10"/> 
</StackPanel> 
+0

'Window' содержит один' control', а остальная часть содержимого должна находиться внутри этого 'control', который теперь является контейнером. Итак, то, что вы делаете сейчас, невозможно. – AnjumSKhan

+0

Просьба представить код, который вы пробовали, с помощью 'Stackpanel'. Это было бы решением, к вашей первой ошибке - что не так с вашим использованием Stackpanel, можно просто ответить, если мы увидим, что вы с ним сделали – TripleEEE

+0

@AnjumSKhan. Я понимаю единую контрольную вещь. Есть ли альтернативный способ делать то, что я пытаюсь? Проблема в том, что, поскольку я создаю игру mindsweeper, мне нужна отдельная сетка. – Nivek

ответ

2

Ваша задача заключается в следующем: window может иметь только 1 Контента. Если вы хотите добавить несколько элементов управления в окно, вам нужно будет поместить их в какой-либо вид контейнера, например stackpanel или grid - Итак, если вы не хотите, чтобы он находился в вашем 'oGrid', вы должны разместить вокруг него другой контейнер.

<StackPanel> 
    <Grid Name="oGrid" HorizontalAlignment="Left" Height="100" Margin="200,75,0,0" VerticalAlignment="Top" Width="100" Background="Transparent" PreviewMouseLeftButtonDown="oGrid_PreviewMouseLeftButtonDown" 
      PreviewMouseRightButtonDown="oGrid_PreviewMouseRightButtonDown"> 
    </Grid> 
    <Button x:Name="button" Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Canvas.Left="200" Canvas.Top="10"/> 
</StackPanel> 

Edit: вы только что изменили свой вопрос ... пожалуйста, напишите код, который вы пытались с StackPanel, например

+0

Благодарим за отзыв. Как указано в моем описании, я пробовал это, и я получаю следующую ошибку в Runtime: «« Необработанное исключение типа «System.ArgumentException» произошло в PresentationCore.dll Дополнительная информация: Должен отключить указанный дочерний элемент от текущего родителя Visual перед прикреплением к новому родительскому Visual. "" – Nivek

+0

Просьба представить ваш код с помощью 'StackPanel' наилучшего полного xaml - у вас может быть ошибка. Потому что ваша вторая ошибка просто не показана, потому что xaml перестает быть переведенным при первой ошибке. Таким образом, с помощью StackPanel вы исправляете это, теперь вам нужно идти после следующей ошибки, которая не имеет никакого отношения к используемой вами StackPanel. – TripleEEE

+0

Решение для стековых панелей, которое вы предоставили, именно то, что я пробовал. Данный xaml - это мой полный xaml – Nivek