wpf MVVM中带有数据模板的选项卡控件
我想根据案例列表加载选项卡的数量,每次点击都想显示案例的详细信息。一个案例还将包含文本和列表集合。 以下是我的代码无法加载的内容wpf MVVM中带有数据模板的选项卡控件,wpf,mvvm,tabcontrol,Wpf,Mvvm,Tabcontrol,我想根据案例列表加载选项卡的数量,每次点击都想显示案例的详细信息。一个案例还将包含文本和列表集合。 以下是我的代码无法加载的内容 <CheckBox Content="Tab " d:LayoutOverrides="Width, Height" FontFamily="{StaticResource BoldFontFamily}" FontWeight="Bold" FontSize="14.667"/>
<CheckBox Content="Tab " d:LayoutOverrides="Width, Height" FontFamily="{StaticResource BoldFontFamily}" FontWeight="Bold" FontSize="14.667"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate x:Name="ContentTemplate1">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="230"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding ID}"></TextBlock>
<ListBox x:Name="lbItems" ItemsSource="{Binding ItemList}" Grid.Row="1" MinHeight="100" Style="{StaticResource PT_ListBoxStyle}"
ItemContainerStyle="{StaticResource ListBoxItemStyle}" >
<ListBox.Resources>
<DataTemplate x:Key="DataTemplate">
<Grid d:DesignWidth="623.375" Margin="0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="160"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" TextWrapping="Wrap" VerticalAlignment="Stretch" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" Text="{Binding IText}" Width="721" HorizontalAlignment="Left"/>
<TextBlock Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Top" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" Width="Auto" Text="{Binding IType}"/>
<TextBlock Grid.Column="2" HorizontalAlignment="Right" VerticalAlignment="Stretch" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" d:LayoutOverrides="Width, Height" Margin="10,0,0,0" TextAlignment="Right" Text="{Binding IAmount}"/>
</Grid>
</DataTemplate>
</ListBox.Resources>
</ListBox>
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
以上是我的XML代码和。。。在我看来,
<CheckBox Content="Tab " d:LayoutOverrides="Width, Height" FontFamily="{StaticResource BoldFontFamily}" FontWeight="Bold" FontSize="14.667"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate x:Name="ContentTemplate1">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="230"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding ID}"></TextBlock>
<ListBox x:Name="lbItems" ItemsSource="{Binding ItemList}" Grid.Row="1" MinHeight="100" Style="{StaticResource PT_ListBoxStyle}"
ItemContainerStyle="{StaticResource ListBoxItemStyle}" >
<ListBox.Resources>
<DataTemplate x:Key="DataTemplate">
<Grid d:DesignWidth="623.375" Margin="0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="160"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" TextWrapping="Wrap" VerticalAlignment="Stretch" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" Text="{Binding IText}" Width="721" HorizontalAlignment="Left"/>
<TextBlock Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Top" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" Width="Auto" Text="{Binding IType}"/>
<TextBlock Grid.Column="2" HorizontalAlignment="Right" VerticalAlignment="Stretch" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" d:LayoutOverrides="Width, Height" Margin="10,0,0,0" TextAlignment="Right" Text="{Binding IAmount}"/>
</Grid>
</DataTemplate>
</ListBox.Resources>
</ListBox>
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
private List<Case> _cases = new List<Case>();
public List<Case> Cases { get { return _cases; } set { _cases = value; } }
public void GetList()
{
List<Case> cases = Customer.GetTabDetails(date);
Cases=cases;
}
private List_cases=new List();
公共列表案例{get{return}Cases;}set{{U Cases=value;}}
public void GetList()
{
列表案例=Customer.GetTabDetails(日期);
例=例;
}
上面的视图模型代码。案例类具有ID、项目列表、客户列表等属性
<CheckBox Content="Tab " d:LayoutOverrides="Width, Height" FontFamily="{StaticResource BoldFontFamily}" FontWeight="Bold" FontSize="14.667"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate x:Name="ContentTemplate1">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="230"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding ID}"></TextBlock>
<ListBox x:Name="lbItems" ItemsSource="{Binding ItemList}" Grid.Row="1" MinHeight="100" Style="{StaticResource PT_ListBoxStyle}"
ItemContainerStyle="{StaticResource ListBoxItemStyle}" >
<ListBox.Resources>
<DataTemplate x:Key="DataTemplate">
<Grid d:DesignWidth="623.375" Margin="0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="160"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" TextWrapping="Wrap" VerticalAlignment="Stretch" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" Text="{Binding IText}" Width="721" HorizontalAlignment="Left"/>
<TextBlock Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Top" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" Width="Auto" Text="{Binding IType}"/>
<TextBlock Grid.Column="2" HorizontalAlignment="Right" VerticalAlignment="Stretch" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" d:LayoutOverrides="Width, Height" Margin="10,0,0,0" TextAlignment="Right" Text="{Binding IAmount}"/>
</Grid>
</DataTemplate>
</ListBox.Resources>
</ListBox>
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
有人能提出解决方案吗?将模板明确定义为
ListBox
sItemTemplate
而不是动态资源。我会尽可能避免使用动态资源
<CheckBox Content="Tab " d:LayoutOverrides="Width, Height" FontFamily="{StaticResource BoldFontFamily}" FontWeight="Bold" FontSize="14.667"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate x:Name="ContentTemplate1">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="230"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding ID}"></TextBlock>
<ListBox x:Name="lbItems" ItemsSource="{Binding ItemList}" Grid.Row="1" MinHeight="100" Style="{StaticResource PT_ListBoxStyle}"
ItemContainerStyle="{StaticResource ListBoxItemStyle}" >
<ListBox.Resources>
<DataTemplate x:Key="DataTemplate">
<Grid d:DesignWidth="623.375" Margin="0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="160"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" TextWrapping="Wrap" VerticalAlignment="Stretch" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" Text="{Binding IText}" Width="721" HorizontalAlignment="Left"/>
<TextBlock Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Top" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" Width="Auto" Text="{Binding IType}"/>
<TextBlock Grid.Column="2" HorizontalAlignment="Right" VerticalAlignment="Stretch" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" d:LayoutOverrides="Width, Height" Margin="10,0,0,0" TextAlignment="Right" Text="{Binding IAmount}"/>
</Grid>
</DataTemplate>
</ListBox.Resources>
</ListBox>
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
<TabControl.ContentTemplate>
<DataTemplate x:Name="ContentTemplate1">
<ListBox x:Name="lbItems"
ItemsSource="{Binding ItemList}"
Style="{StaticResource PT_ListBoxStyle}"
ItemContainerStyle="{StaticResource ListBoxItemStyle}"
MinHeight="100">
<ListBox.ItemTemplate>
<DataTemplate >
<Grid d:DesignWidth="623.375" Margin="0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="160"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" TextWrapping="Wrap" VerticalAlignment="Stretch" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" Text="{Binding IText}" Width="721" HorizontalAlignment="Left"/>
<TextBlock Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Top" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" Width="Auto" Text="{Binding IType}"/>
<TextBlock Grid.Column="2" HorizontalAlignment="Right" VerticalAlignment="Stretch" FontFamily="{StaticResource RegularFontFamily}" FontSize="21.333" d:LayoutOverrides="Width, Height" Margin="10,0,0,0" TextAlignment="Right" Text="{Binding IAmount}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
谢谢您的回复。但我还是有个问题。如果我的数据库返回2个案例,它可以创建2个选项卡,但不能与选项卡进行数据绑定。我已经检查了我的viewmodel。它具有与listbox绑定的项源数据。我现在能做什么?你能发布你的视图模型吗?视图模型有一大行代码..对不起。在我的方法中,我将数据作为一个可观察的收集列表返回,并使用tab控件绑定。没有更多信息,很难提供帮助。尝试发布ViewModel的相关部分。我在下面附上了我的代码。请参考并提出解决方案。请将问题的所有代码保留在问题中。不要用问题的详细信息发送答案,只需添加到问题中即可。本网站不使用论坛/讨论格式。