如何在包含一些相同类型的自定义用户控件的堆栈面板的WPF列表框中创建? 列表框和堆栈面板应该是可滚动的。 ListBox.Items动态添加,UserControls也添加到StackPanels。 我试过google,没有找到类似的东西,只有带有复选框和图片的简单列表框示例。
答案 0 :(得分:0)
使用ScrollViewer和ItemsControl
例如:
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Visible">
<ItemsControl x:Name="personsColl" ItemsSource="{Binding Path=Persons,
ElementName=CustomPersonInfoColl,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid x:Name="personMainContainer">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<!-- context for reapeat -->
<local:PersonInfo .... />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
别忘了
<UserControl x:Name="CustomPersonInfoColl" .... >
并返回代码
public partial class PersonInfoCollection : UserControl, INotifyPropertyChanged
{
[Bindable(true)]
public IList<ShortPersonInfo> Persons
{
get { return (IList<ShortPersonInfo>)this.GetValue(PersonsProperty); }
set { this.SetValue(PersonsProperty, value); OnPropertyChanged("Persons");}
}
public static readonly DependencyProperty PersonsProperty =
DependencyProperty.Register("Persons",
typeof(IList<ShortPersonInfo>),
typeof(PersonInfoCollection));
}
您可以从其他获胜表格或控件中填写人员收藏。