Невозможно добавить различные элементы управления на панель GRID в С#

Я совершенно новичок в XAML и WPF, и я не могу добавить другой тип элемента управления (например, TextBox или Label) в сетку после добавления кнопки. Не могли бы вы объяснить мне, где я делаю ошибку (я думаю, это должна быть какая-то простая ошибка новичка).

Я создал приложение на C# с помощью Win Forms и решил создать такое же приложение с помощью WPF, которым никогда раньше не пользовался, чтобы узнать что-то новое. Я не силен в C# FYI. Я начал новый проект с приложением WPF в Visual Studio, создал 2 столбца и 4 строки для сетки и начал добавлять в него некоторые элементы управления. К сожалению, я не могу сделать работающее приложение с кнопками и другим типом управления на той же сетке. Похоже, сетка позволит мне добавить только 1 тип элементов управления, что для меня не имеет смысла, и я не смог найти информацию о таком ограничении. Включен простой код XAML.

   <Window x:Class="AjStock_WPF_3.CSVToSQL"
    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:AjStock_WPF_3"
    mc:Ignorable="d"
    Title="CSVToSQL" Height="450" Width="800" MinHeight="200" MinWidth="250">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="120" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="50" />
        <RowDefinition Height="50" />
        <RowDefinition Height="*" />
        <RowDefinition Height="50" />
    </Grid.RowDefinitions>

    <Button Grid.Column="0" Grid.Row="0">
        <Button.Name>GetCSVFile</Button.Name>
        <Button.Content>Get CSV file</Button.Content>
        <Button.Margin>10</Button.Margin>
        <Button.VerticalContentAlignment>Center</Button.VerticalContentAlignment>
        <Button.HorizontalContentAlignment>Center</Button.HorizontalContentAlignment>
        <Button.FontWeight>Bold</Button.FontWeight>
        <Button.FontSize>14</Button.FontSize>
        <Button.BorderThickness>2</Button.BorderThickness>
    </Button>

    <TextBox Grid.Column="1" Grid.Row="0">
        <TextBox.VerticalContentAlignment>Center</TextBox.VerticalContentAlignment>
        <TextBox.HorizontalContentAlignment>Center</TextBox.HorizontalContentAlignment>
        <TextBox.Margin>10</TextBox.Margin>
    </TextBox>

</Grid>

Expected result would be a window with controls like this:

Button | TextBox  
Label | TextBox  
Button | TextBox  
Button | Button

Ошибка, которую я получаю:

CS0029 Невозможно неявно преобразовать тип «System.Windows.Controls.TextBox» в «System.Windows.Controls.Button» AjStock_WPF_3 D:\OneDrive\Microsoft Visual Studio\source\repos\AjStock_WPF_3\AjStock_WPF_3\obj\Debug\CSVToSQL.g. кс 104 Активный


person ledom    schedule 07.07.2019    source источник
comment
В качестве примечания вы можете использовать гораздо менее подробный синтаксис атрибута XAML: <TextBox Grid.Column="1" Grid.Row="0" VerticalContentAlignment="Center" ... />   -  person Clemens    schedule 07.07.2019
comment
Попробуйте очистить и восстановить   -  person the.Doc    schedule 07.07.2019
comment
@the.Doc Я пробовал это раньше, к сожалению, это не помогло.   -  person ledom    schedule 07.07.2019


Ответы (1)


Вам нужно удалить

<Button.Name>GetCSVFile</Button.Name>

и заменить на

<Button Grid.Column="0" Grid.Row="0" Name="GetCSVFile">

Не уверен, почему это требуется, поскольку, когда текстовое поле удаляется, оставляя только кнопку, оно компилируется. Вероятно, это связано с отображением x:Name, но не уверен на 100%.

person the.Doc    schedule 07.07.2019