2015-06-21 3 views
3

Я начинаю с WPF. Я делаю учебник SofiaCarRental, и у меня проблема с псевдонимом «local». Может ли кто-нибудь помочь мне с этим псевдонимом? У меня есть все эти классы, которые не найдены.WPF '' local '- необъявленный префикс

Список ошибок

Error 3 ''local' is an undeclared prefix. Line 1, position 2.' XML is not valid. c:\..\SofiaCarRental.WPF\Views\AddEditWindow.xaml 1 2 SofiaCarRental.WPF 
Error 5 The attachable property 'Resources' was not found in type 'Window'. c:\..\SofiaCarRental.WPF\Views\AddEditWindow.xaml 8 6 SofiaCarRental.WPF 
Error 2 The name "NullableBooleanConverter" does not exist in the namespace "clr-namespace:SofiaCarRental.WPF.Views". c:\..\SofiaCarRental.WPF\Views\MainWindow.xaml 10 9 SofiaCarRental.WPF 
Error 1 The namespace prefix "local" is not defined. c:\..\SofiaCarRental.WPF\Views\AddEditWindow.xaml 1 1 SofiaCarRental.WPF 
Error 4 The type 'local:BaseDialogWindow' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built. c:\..\SofiaCarRental.WPF\Views\AddEditWindow.xaml 1 2 SofiaCarRental.WPF 
Error 8 The type 'local:EmptyStringConverter' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built. c:\..\SofiaCarRental.WPF\Views\AddEditWindow.xaml 11 10 SofiaCarRental.WPF 
Error 6 The type 'local:NullableBooleanConverter' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built. c:\..\SofiaCarRental.WPF\Views\AddEditWindow.xaml 9 10 SofiaCarRental.WPF 
Error 7 The type 'local:YearConverter' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built. c:\..\SofiaCarRental.WPF\Views\AddEditWindow.xaml 10 10 SofiaCarRental.WPF 

Главное окно (здесь я указал 'местный')

<Window x:Class="SofiaCarRental.WPF.Views.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" 
    xmlns:local ="clr-namespace:SofiaCarRental.WPF.Views" 
    Title="Sofia Car Rental" 
    Height="720" Width="1280" 
    MinHeight="720" MinWidth="1280"> 
<Window.Resources> 
    <local:NullableBooleanConverter x:Key="booleanConverter" /> 
    <Style x:Key="checkBoxColStyle" TargetType="telerik:GridViewCell"> 
     <Setter Property="HorizontalContentAlignment" Value="Center" /> 
    </Style> 
</Window.Resources> 
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto"> 
    ... 
</Grid></Window> 

AddEditWindow

<local:BaseDialogWindow x:Class="SofiaCarRental.WPF.Views.AddEditWindow" 
    xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="AddEditWindow" 
    Height="417" Width="383" 
    Title="{Binding Path=Title}"> 
<Window.Resources> 
    <local:NullableBooleanConverter x:Key="booleanConverter" /> 
    <local:YearConverter x:Key="yearConverter" /> 
    <local:EmptyStringConverter x:Key="emptyStringConverter" /> 
</Window.Resources> 
<Grid Margin="20,10,50,10"> 
    ... 
</Grid></local:BaseDialogWindow> 

BaseDialogWindow класс:

namespace SofiaCarRental.WPF.Views 
{ 
public class BaseDialogWindow : Window 
{ 
    public BaseDialogWindow() 
    { 
     this.Owner = App.Current.MainWindow; 
     this.ShowInTaskbar = false; 
     this.ResizeMode = System.Windows.ResizeMode.NoResize; 
     this.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner; 
    } 
}} 

NullableBooleanConverter

namespace SofiaCarRental.WPF.Views{ 
public class NullableBooleanConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, 
     object parameter, CultureInfo culture) 
    { 
     object result = this.NullableBooleanToFalse(value); 
     return result; 
    } 
    public object ConvertBack(object value, Type targetType, 
     object parameter, CultureInfo culture) 
    { 
     object result = this.NullableBooleanToFalse(value); 
     return result; 
    } 
    private object NullableBooleanToFalse(object value) 
    { 
     if (value == null) 
     { 
      return false; 
     } 
     else 
     { 
      return value; 
     } 
    } 
}} 
+0

Является ли структура каталогов на первой строке ошибки правильной? Не то, чтобы это имело значение, но что, если вы поместили линию telerik ниже локальной? Также не важно, что это важно, но что, если вы создали проект «SofiaCarRentallWPF» (без периода), чтобы увидеть, изменилось ли оно? – SteveFerg

+0

Telerik ниже местного не помогло. Имя SofiaCarRentalWPF без периода также ничего не изменило. Структура кажется хорошей, я сделал это точно так же, как и в учебнике ... Я сделал учебник с нуля два раза и ту же ошибку ... – tauri

+0

1. В вашем файле xaml 'AddEditWindow' префикс' local' не является объявлен. 2. Ваш 'NullableBooleanConverter', вероятно, объявлен в другом пространстве имен, чем' SofiaCarRental.WPF.Views'. Можете ли вы разместить свой код (включая декларацию пространства имен)? – vesan

ответ

4

Ошибка 3 '' локального»является необъявленная префикс. Строка 1, позиция 2. ' XML недействителен. C: .. \ SofiaCarRental.WPF \ Views \ AddEditWindow.xaml 1 2 SofiaCarRental.WPF

В файле AddEditWindow.xaml, то local префикс не объявлен. Объявления XML-пространства имен работают по-по-файлу. Они не наследуются и только активны для текущего файла. Если вы хотите использовать компоненты из других пространств имен в этом файле, вам также придется добавить там декларацию. Вы можете увидеть их, как using с в коде, когда вы хотите использовать тип, вы должны указать компилятору, где искать его первым:

<local:BaseDialogWindow x:Class="SofiaCarRental.WPF.Views.AddEditWindow" 
    … 
    xmlns:local="clr-namespace:SofiaCarRental.WPF.Views" 
    … > 

Ошибка 5 присоединяемых свойство «Ресурсы 'не было найдено в окне «Окно». C: .. \ SofiaCarRental.WPF \ Views \ AddEditWindow.xaml 8 6 SofiaCarRental.WPF

Хотя local:BaseDialogWindow является подтипом Window, это еще тип для этого файла. Компилятор видит это, когда он смотрит на XAML для этой части:

<SomeType …> 
    <OtherType.Property>…</OtherType.Property> 
</SomeType> 

И это, по существу эквивалентно следующему:

<SomeType … OtherType.Property="…" /> 

Поскольку OtherType не то же самое, как SomeType, это вложенное имущество в XAML. Но Window не имеет прикрепленного свойства, называемого Resources.

Вместо этого вместо этого вы должны установить свойство Resources вашего окна.И ваш тип окна SomeType, так что вы должны написать это:

<SomeType …> 
    <SomeType.Property>…</SomeType.Property> 
</SomeType> 

Так что в вашем случае, вы хотите установить свои ресурсы, как это:

<local:BaseDialogWindow x:Class="SofiaCarRental.WPF.Views.AddEditWindow" 
     … > 
    <local:BaseDialogWindow.Resources> 
     … 
    </local:BaseDialogWindow.Resources> 
    … 
</local:BaseDialogWindow> 

Остальные ошибки все потому, что вы используете префикс local:, не объявляя его первым, и компилятор не находит ваши типы.

+0

Спасибо, тыкаешь! Я исправил проблему. Этот урок не ясен и содержит ошибки. Теперь я понимаю лучше – tauri

Смежные вопросы