列表框没有显示我的第一项
|
我在WPF上遇到了一个小问题,并将我的列表框/列表视图绑定到了自定义列表。
此列表已实现IEnumerator和IEnumerable接口。如果将控件绑定到这些控件,则永远看不到该列表的第一个对象。
当我使用gridview时,它确实显示了我的第一个对象。因此出于某种原因,列表框/列表视图正在做不同的事情来枚举我的自定义列表。
我的绑定是使用ViewModel上的public属性以完全相同的方式进行设置的。
Binding(My PersonObject有一个公共属性ProjectList,它获取我正在谈论的自定义列表)。
public Person Person
{
get
{
return this._person;
}
set
{
if (this._person != value)
{
this._person = value;
RaisePropertyChanged(\"Person\");
}
}
}
XAML:
<ListBox ItemsSource=\"{Binding Path=Person.ProjectList,UpdateSourceTrigger=PropertyChanged}\" AlternationCount=\"2\" ItemContainerStyle=\"{StaticResource CustomListBoxItemStyle}\">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat=\"{}{0} - {1}\">
<Binding Path=\"Name\" />
<Binding Path=\"Number\" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat=\"{}{0} - {1}\">
<Binding Path=\"StartDate\" />
<Binding Path=\"EndDate\" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Customlist类:
public class ProjectList : DeletableSupport, IEnumerator, IEnumerable
{
private IList<Project> _pList;
private int _position;
public ProjectList()
{
this._pList = new ActivatableList<Project>();
this._position = -1;
}
public void Add(Project p)
{
Activate(ActivationPurpose.Write);
this._pList.Add(p);
}
public void Remove(Project p)
{
Activate(ActivationPurpose.Write);
this._pList.Remove(p);
}
public int Count()
{
Activate(ActivationPurpose.Read);
return this._pList.Count();
}
public bool Contains(Project p)
{
Activate(ActivationPurpose.Read);
return this._pList.Contains(p);
}
public Project this[int i]
{
get
{
Activate(ActivationPurpose.Read);
return this._pList[i];
}
set
{
Activate(ActivationPurpose.Write);
this._pList[i] = value;
}
}
public static ProjectList operator +(ProjectList pList, Project p)
{
pList.Add(p);
return pList;
}
public static ProjectList operator -(ProjectList pList, Project p)
{
pList.Remove(p);
return pList;
}
#region IEnumerable Members
public IEnumerator GetEnumerator()
{
Activate(ActivationPurpose.Read);
return (IEnumerator)this;
}
#endregion
#region IEnumerator Members
public object Current
{
get
{
try
{
Activate(ActivationPurpose.Read);
return this._pList[_position];
}
catch (IndexOutOfRangeException)
{
throw new InvalidOperationException();
}
}
}
public bool MoveNext()
{
Activate(ActivationPurpose.Read);
this._position++;
if (_position < this._pList.Count)
{
return true;
}
else
{
return false;
}
}
public void Reset()
{
Activate(ActivationPurpose.Write);
_position = -1;
}
#endregion
}
Activate来自db4o,ActivatableList实现IList
没有找到相关结果
已邀请:
1 个回复
靛取糕奖穿