我所做的很简单。我在ItemControl中托管UserControl列表。
我用一个简单的TextBox作为UserControl编写了一个测试应用程序,它按预期工作。但是当我在主代码中加入它时,ItemControl不会显示所有文本框。它始终将其限制为3,文本框中的值不会更新。
IDE是否限制了当我有其他控件时我可以在设计器中查看多少个UserControl?当我执行代码时,我确实看到了所有UserControls。我只需要显示6而不是100。我想在我的主代码中看到设计器中的所有UserControl,而不仅仅是测试应用程序。
测试应用程序和我的主应用程序之间的代码是相同的。
这是代码,我附上了我在Designer中看到的图片。
/// <summary>
/// View Model Class for the MainWindow.
/// </summary>
class AViewModel : INotifyPropertyChanged
{
public AViewModel()
{
ZList = new ObservableCollection<StringObject>
{
new StringObject {Value = "1"},
new StringObject {Value = "2"},
new StringObject {Value = "3"},
new StringObject {Value = "4"},
new StringObject {Value = "5"},
new StringObject {Value = "6"},
new StringObject {Value = "7"},
};
}
private ObservableCollection<StringObject> zlist;
public ObservableCollection<StringObject> ZList
{
get { return zlist; }
set
{
zlist = value;
OnPropertyChanged("ZList");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
public class StringObject
{
public string Value { get; set; }
}
}
主窗口的XML
<Window x:Class="IssueWPF.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:IssueWPF"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:AViewModel></local:AViewModel>
</Window.DataContext>
<Grid>
<Viewbox>
<ItemsControl ItemsSource="{Binding ZList}" Height="220" Margin="0">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Viewbox>
</Grid>
</Window>