WPF xaml-数据网格和按钮can';不能共存

本文关键字:不能 can 按钮 数据 xaml- 数据网 网格 WPF | 更新日期: 2023-09-27 18:01:15

所以我试图在我的wpf表单中添加一个数据网格和一个按钮。

<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>

但每当我取消注释按钮时,我都会收到错误:"属性'Content'设置了多次。">

WPF xaml-数据网格和按钮can';不能共存

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:定义一个区域,通过使用相对于Canvas区域的坐标,可以在其中显式定位子元素
  • StackPanel将子元素排列成可以水平或垂直定向的单行
  • WrapPanel将子元素从左到右依次放置,将内容打断到包含框边缘的下一行。后续排序从上到下或从右到左依次进行
  • UniformGrid提供一种在网格中排列内容的方法,其中网格中的所有单元格都具有相同的大小

窗口只能有一个子元素。你需要把它放在一个网格或堆叠面板内

<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>