我正在處理的代碼是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