我正在处理的代码是WPF应用程序的一部分,该应用程序应显示一组用户可与之交互的扑克牌堆栈。因此,有三个用户控件我的工作:WPF ItemsControl:似乎无法让项目在视图中显示
- 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类的字符串属性。
谢谢你的收获,今晚要解决这个问题。 – emptyset 2009-09-28 21:09:11