2014-05-01 96 views
0

所以我想添加一個數據網格和一個按鈕到我的wpf窗體。WPF xaml - datagrid和按鈕不能共存?

<Window x:Class="Database_Filler.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Database Filler" Height="350" Width="557"> 

    <DataGrid x:Name="data" HorizontalAlignment="Left" VerticalAlignment="Top" Height="230" Width="520"/> 

    <!--<Button Content="Run Query" HorizontalAlignment="Left" Margin="468,294,0,0" VerticalAlignment="Top" Width="75" Click="Button1_Click"/>--> 

</Window> 

但每當我取消按鈕我得到的錯誤:「屬性‘內容’設置爲超過一次。」

回答

2

WindowContentControl這樣只能承載一個元件。如果你想主持更多的一個元素,那麼你需要某種可以容納許多孩子的某種Panel。您可以從幾個實現像GridStackPanelWrapPanel等選擇上取決於你想如何安排你的項目

<Window x:Class="Database_Filler.MainWindow" ...> 
    <StackPanel> 
     <DataGrid x:Name="data" HorizontalAlignment="Left" VerticalAlignment="Top" Height="230" Width="520"/> 
     <Button Content="Run Query" HorizontalAlignment="Left" Margin="468,294,0,0" VerticalAlignment="Top" Width="75" Click="Button1_Click"/> 
    </StackPanel> 
</Window> 

編輯

最常用的Panel類型:

  • Grid定義由列和行組成的靈活網格區域
  • DockPanel定義一個區域,您可以在其中相對於彼此水平或垂直排列子元素。
  • Canvas定義一個區域,您可以在其中使用相對於「畫布」區域的座標明確定位子元素。
  • StackPanel將子元素排列成可以水平或垂直定向的單行。
  • WrapPanel將子元素從左到右依次放置,將內容分解到包含框邊緣的下一行。後續排序順序發生從上到下或從右到左
  • UniformGrid提供一種方法來安排在網格中的內容,其中網格中的所有單元格的大小相同。
2

該窗口只能有一個子元素。你需要把它放在例如網格內或StackPanel中

<Window x:Class="Database_Filler.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Database Filler" Height="350" Width="557"> 

    <Stackpanel> 
     <DataGrid x:Name="data" HorizontalAlignment="Left" VerticalAlignment="Top" Height="230" Width="520"/> 

     <Button Content="Run Query" HorizontalAlignment="Left" Margin="468,294,0,0" VerticalAlignment="Top" Width="75" Click="Button1_Click"/> 
    </Stackpanel> 

</Window>