> MainControl
> CardStackControl
> CardControl
在MainControl.xaml中:
<StackPanel GrID.Row="0" OrIEntation="Horizontal"> <ItemsControl ItemsSource="{Binding Path=CardStacks}" > <ItemsPanelTemplate> <StackPanel OrIEntation="Horizontal" /> </ItemsPanelTemplate> </ItemsControl> </StackPanel>
我的数据模板在Resources.xaml文件中定义:
<DataTemplate x:Key="MainTemplate" DataType="{x:Type viewmodel:Mainviewmodel}"> <VIEw:MainControl /></DataTemplate><DataTemplate DataType="{x:Type viewmodel:CardStackviewmodel}"> <VIEw:CardStackControl /></DataTemplate><DataTemplate x:Key="CardTemplate" DataType="{x:Type viewmodel:Cardviewmodel}"> <VIEw:CardControl /></DataTemplate>
CardStackControl.xaml:
<StackPanel OrIEntation="Vertical"> <TextBlock Height="30" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Path=Cardname}" /> <ItemsControl Height="auto" ItemsSource="{Binding Path=Cards}" ItemTemplate="{StaticResource CardTemplate}" > <ItemsPanelTemplate> <StackPanel OrIEntation="Horizontal" /> </ItemsPanelTemplate> </ItemsControl> <TextBlock Height="30" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Path=Count}" /></StackPanel>
CardControl.xaml:
<TextBlock name="TitleTextBlock" GrID.Row="0" GrID.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Path=name}" >
Mainviewmodel:
public ObservableCollection<CardStackviewmodel> CardStacks;// ...
CardStackviewmodel:
public class CardStackviewmodel{ private CardStack Model; public string Cardname { get { return this.Model.CardType.name; } } public int Count { get { return this.Model.Cards.Count; } } public ObservableCollection<Cardviewmodel> Cards { get; private set; } // ...
Cardviewmodel:
/// <summary> /// A reference to the Card type. /// </summary> private Card Model; /// <summary> /// RetrIEves the name of the card. /// </summary> public string name { get { return this.Model.CardType.name; } } public string Caption { get { return this.Model.CardType.Text; } } // ...
在Mainviewmodel,CardStackviewmodel构造函数中,两个ObservableCollection实例都被初始化,填充并填充了一些测试数据.
当我加载应用程序并创建Mainviewmodel时,UserControls不会显示,并且没有任何测试数据可见.我使用this tutorial作为指南,因此Mainviewmodel对应于该窗口中选项卡式控件上的“Workspaces”viewmodel.当然,这个例子应该横向布局每个控件,现在这很好 – 我还在学习WPF.
显然,我已经在.xaml文件和其他脚手架代码中省略了代码生成的标签(如果从这些示例中不清楚,我可以修改它以发布该代码).我现在只测试/绑定到Model类的字符串属性.
解决方法 声明ItemsPanelTemplate的方式不正确:您将其声明为ItemsControl的项目.你应该这样做:<ItemsControl ItemsSource="{Binding Path=CardStacks}" > <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel OrIEntation="Horizontal" IsItemsHost="True" /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> </ItemsControl>总结
以上是内存溢出为你收集整理的c# – WPF ItemsControl:似乎无法获取要在视图中显示的项目全部内容,希望文章能够帮你解决c# – WPF ItemsControl:似乎无法获取要在视图中显示的项目所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)