WPF表单设计器的XAML出现问题请帮忙

问题描述

|| 我正在学习WPF和XAML。这是我的Form XAML代码和我的课程的代码(ListboxMenuItem)
<Window x:Class=\"Bail.MainWindow\"
    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"
    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"
    xmlns:src=\"clr-namespace:Bail\"
    Title=\"MainWindow\" Height=\"768\" Width=\"1024\" WindowStartupLocation=\"CenterScreen\"
    Closing=\"Window_Closing\" ResizeMode=\"NoResize\">
    <Grid>
        <Grid.Resources> 
            <src:ListboxMenuItems x:Key=\"ListboxMenuItems\"/>
        </Grid.Resources>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width=\"185\" />
            <!-- Or Auto -->
            <ColumnDefinition Width=\"*\" />
        </Grid.ColumnDefinitions>


        <ListBox Width=\"150\" Margin=\"0,5,10\" Grid.Column=\"0\"
                 ItemsSource=\"{StaticResource ListboxMenuItems}\">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation=\"Horizontal\">
                        <TextBlock Padding=\"5,0\" Text=\"{Binding FirstName}\" />
                        <TextBlock Text=\"{Binding LastName}\" />
                        <TextBlock Text=\",\" />
                        <TextBlock Text=\"{Binding Address}\" />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>            
        </ListBox>


        <Canvas Grid.Column=\"1\" />
    </Grid>
</Window>
这是错误 更正xmlns:src后,我得到以下信息 警告: 警告1 \'\'src \'是未声明的前缀。第8行,位置14。XML无效。 C:\\ Bail \\ Bail \\ Bail \\ MainWindow.xaml 8 14保释 错误是指XAML中的这一行(
<src:ListboxMenuItems x:Key=\"ListboxMenuItems\"/>
) ListBoxMenuItems是我在C#中创建的一个类。 这是课程的代码
//FileName: ListboxMenuItems.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Bail
{
    public class ListboxMenuItem
    {
        public String FirstName { get; set; }
        public String LastName { get; set; }
        public String Address { get; set; }

        public ListboxMenuItem(String firstName,String lastName,String address)
        {
            this.FirstName = firstName;
            this.LastName = lastName;
            this.Address = address;
        }
    }

    class ListboxMenuItems 
    { 
        List<ListboxMenuItem> Items { get; private set; } 
        public ListboxMenuItems() 
        { 
            Items = new List<ListboxMenuItem>(); 
            Items.Add(new ListboxMenuItem(\"Michael\",\"Anderberg\",\"12 North Third Street,Apartment 45\")); 
            Items.Add(new ListboxMenuItem(\"Chris\",\"Ashton\",\"34 West Fifth Street,Apartment 67\")); 
            Items.Add(new ListboxMenuItem(\"Cassie\",\"Hicks\",\"56 East Seventh Street,Apartment 89\")); 
            Items.Add(new ListboxMenuItem(\"Guido\",\"Pica\",\"78 South Ninth Street,Apartment 10\")); 
        } 
    }
}
    

解决方法

        您顶部的xmlns声明应包含src: xmlns:src = \“ clr-namespace:Bail \” 同样,您似乎需要将ListBox的ItemsSource指向类中的Items。我建议将您的类更改为仅从List继承,并取消使用Items属性:
class ListboxMenuItems : List<ListboxMenuItem>
{ 
    public ListboxMenuItems() 
    { 
        Add(new ListboxMenuItem(\"Michael\",\"Anderberg\",\"12 North Third Street,Apartment 45\")); 
        Add(new ListboxMenuItem(\"Chris\",\"Ashton\",\"34 West Fifth Street,Apartment 67\")); 
        Add(new ListboxMenuItem(\"Cassie\",\"Hicks\",\"56 East Seventh Street,Apartment 89\")); 
        Add(new ListboxMenuItem(\"Guido\",\"Pica\",\"78 South Ninth Street,Apartment 10\")); 
    } 
}
这应该使它工作。     ,        线
xmlns=\"clr-namespace:Bail\" 
必须更改为
xmlns:src=\"clr-namespace:Bail\"
编辑: 在制定了
ListboxMenuItems
类别
IEnumerable
IEnumerator
之后,该代码对我有效:
//FileName: ListboxMenuItems.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Bail
{
    public class ListboxMenuItem
    {
        public String FirstName { get; set; }
        public String LastName { get; set; }
        public String Address { get; set; }

        public ListboxMenuItem(String firstName,String lastName,String address)
        {
            this.FirstName = firstName;
            this.LastName = lastName;
            this.Address = address;
        }
    }

    public class ListboxMenuItems : IEnumerable,IEnumerator
    {
        List<ListboxMenuItem> Items { get; set; }

        private int _position = -1;
        public ListboxMenuItems()
        {
            Items = new List<ListboxMenuItem>();
            Items.Add(new ListboxMenuItem(\"Michael\",Apartment 45\"));
            Items.Add(new ListboxMenuItem(\"Chris\",Apartment 67\"));
            Items.Add(new ListboxMenuItem(\"Cassie\",Apartment 89\"));
            Items.Add(new ListboxMenuItem(\"Guido\",Apartment 10\"));
        }

        #region Implementation of IEnumerable

        /// <summary>
        /// Returns an enumerator that iterates through a collection.
        /// </summary>
        /// <returns>
        /// An <see cref=\"T:System.Collections.IEnumerator\"/> object that can be used to iterate through the collection.
        /// </returns>
        /// <filterpriority>2</filterpriority>
        public IEnumerator GetEnumerator()
        {
            return this;
        }

        #endregion

        #region Implementation of IEnumerator

        /// <summary>
        /// Advances the enumerator to the next element of the collection.
        /// </summary>
        /// <returns>
        /// true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.
        /// </returns>
        /// <exception cref=\"T:System.InvalidOperationException\">The collection was modified after the enumerator was created. </exception><filterpriority>2</filterpriority>
        public bool MoveNext()
        {
            _position++;
            return (_position < Items.Count);
        }

        /// <summary>
        /// Sets the enumerator to its initial position,which is before the first element in the collection.
        /// </summary>
        /// <exception cref=\"T:System.InvalidOperationException\">The collection was modified after the enumerator was created. </exception><filterpriority>2</filterpriority>
        public void Reset()
        {
            _position = -1;
        }

        /// <summary>
        /// Gets the current element in the collection.
        /// </summary>
        /// <returns>
        /// The current element in the collection.
        /// </returns>
        /// <exception cref=\"T:System.InvalidOperationException\">The enumerator is positioned before the first element of the collection or after the last element.</exception><filterpriority>2</filterpriority>
        public object Current
        {
            get
            {
                try
                {
                    return Items.ElementAt(_position);
                }
                catch (IndexOutOfRangeException)
                {
                    throw new InvalidOperationException();
                }
            }
        }

        #endregion
    }
}
    ,        在您的XAML文件中,“ 10”未定义为名称空间前缀。 您可能需要将第4行更改为:
xmlns:src=\"clr-namespace:Bail\"
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...