CS0103 Ошибка в Visual Studio для простого проекта, содержащего только текстовое поле и кнопку - PullRequest
0 голосов
/ 10 декабря 2018

ОБНОВЛЕНИЕ * Моя ошибка была связана с компьютером, который я использовал и не являлся частью проверенного алгоритма FIPS.Эта ошибка появилась только после того, как я закрыл Visual Studio и попытался скомпилировать пустую форму WPF по умолчанию.Я сделал то же самое на персональном компьютере, и он скомпилирован, как и ожидалось.*

Я знаком с созданием формы Windows с использованием C #.Я посмотрел на методы, чтобы изменить внешний вид моих форм, подобно использованию скинов, и мне сказали, что было бы проще, если бы я использовал WPF .... хорошо.

В попытке ознакомиться с WPF,Я взял книгу "MASTERING_WINDOWS_PRESENTATION_FOUNDATION", и она медленно продвигалась с обсуждением MVVM и привязки данных (новые темы для меня).Я почувствовал, что смогу узнать разницу между WPF и Windows Forms гораздо быстрее, если сначала попробую создать простое приложение WPF.Затем, когда я читал, я мог видеть, как что-то, сделанное очень знакомым способом с помощью Windows Forms, делается с помощью WPF.

К сожалению, я застрял прямо из коробки!

Используя VS2017, я создал новое приложение WPF (.NET Framework), затем добавил текстовое поле и кнопку.Я создал имя для обоих, так как оно не создается автоматически, как в Windows Forms.Затем я дважды щелкаю по кнопке, и в файле MainWindow.xaml.cs создается блок метода.Я продолжаю добавлять текст в текстовое поле (txtbox_1.Text="Hello;").

Я заметил несколько вещей: 1.) Вызов InitializeComponent(); в методе MainWindow() подчеркнут и соответствует ошибке CS0103 2.) Intellisense не распознал текстовое поле.Я напечатал полное имя, и оно создало ошибку, когда я был сделан.(Та же ошибка CS0103)

Я просмотрел stackoverflow, но нашел статьи о Xamarin.Я слышал об этом как о способе написания кода для Android, но не знаю, как это связано с тем, что я пытаюсь сделать.

Чего мне не хватает?

Вот мой файл XAML:

<Window x:Class="WpfApp4.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:WpfApp4"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Button x:Name="btn_browse" Content="Button" HorizontalAlignment="Left" Margin="524,91,0,0" VerticalAlignment="Top" Width="75"/>
        <TextBlock x:Name="txtbox_1" HorizontalAlignment="Left" Margin="134,93,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Height="20" Width="363"/>

    </Grid>
</Window>

А вот мой файл MainWindow.xaml.cs:

using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp4
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        public void SimpleMethod()
        {
            txtbox_1.Text = "Hello";
        }
    }
}

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Это означает, что ваш класс MainWindow на самом деле не наследуется от класса System.Windows.Window.

Я не вижу ссылки на System.Windows в вашем классе.Это пространство имен, в котором определен базовый класс окна WPF.Таким образом, ваш базовый класс Window может ссылаться на класс Window из некоторого другого пространства имен, и поэтому он не имеет метода InitializeComponents () и не может ссылаться на свойство из XAML.Попробуйте сначала добавить это, используя директиву для кода позади класса.Если это не решает задачу, проверьте, есть ли в вашем проекте ссылка на System.Windows.Если в вашем менеджере ссылок нет System.Windows (это может быть, если ваш проект настроен на компиляцию в .NET 4.0), добавьте ссылки на PresentationFramework, PresentationCore и WindowsBase.

0 голосов
/ 17 декабря 2018

Ошибка была связана с рабочим компьютером, который я использовал ... что-то связанное с FIPS.Вы должны быть в состоянии создать новый проект WPF и скомпилировать пустую форму без ошибок.Я сделал то же самое на персональном компьютере, и он скомпилирован, как и ожидалось.Я также смог воспроизвести проект WinForms в виде WPF, используя код без ошибок.Внедрение с использованием MVVM заняло значительное количество времени, так как концепция моделей представлений была для меня новой, но, в конце концов, это неплохо.

0 голосов
/ 10 декабря 2018

That InitializeComponent ();Строка очень важна, потому что инструкция превращает ваш xaml в пользовательский интерфейс.Если он подчеркнут, то ваш частичный класс для кода позади не совпадает с xaml.

У вас будет что-то вроде

Либо это, либо вы пропустили, некоторые фундаментальные ссылки должны были быть добавлены при запускеваш проект.

Я предлагаю вам просто поменять свой SLN.

Просто удалите его и начните снова.Создайте новый проект wpf.Нажмите f5.Если он выходит из строя и горит, ваша VS-установка не работает.

Любой, и каждый скажет вам изучить MVVM.И вам следует.

https://social.technet.microsoft.com/wiki/contents/articles/31915.wpf-mvvm-step-by-step-1.aspx?Redirected=true

https://social.technet.microsoft.com/wiki/contents/articles/32164.wpf-mvvm-step-by-step-2.aspx?Redirected=true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...