如何解决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\"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。