gpt4 book ai didi

c# - TabControl 未找到 TabControl 项的数据模板

转载 作者:行者123 更新时间:2023-12-03 10:32:40 25 4
gpt4 key购买 nike

我正在绑定(bind) TabViewModel 的集合项目到 TabControl .每一个都有一个标题 string属性,以及我自己的自定义类型的内容属性 BaseTabContentViewModel ,每个实际选项卡数据 View 模型实现的抽象类。例如 ValuationTabViewModel它是 BaseTabContentViewModel 的子类.

我添加了新的 TabViewModelObservable<TabViewModel>对于TabControl拿起并显示在 UI 中。我已经为选项卡控件和标题的布局覆盖了样式模板,它们可以正常工作。唯一的问题是内容没有根据它的类型在我的资源字典中找到模板,它只显示 View 模型的完整限定类名称,表明它没有找到这个类的默认模板。

为什么不是 ValuationTabViewModel正在显示,在下面找到此类型的数据模板?

我的主视图模型。

public ObservableCollection<TabViewModel> DetailTabs { get; }

var valuationTab = new TabViewModel(DetailTabConstants.ValuationTab, new ValuationTabViewModel(_eventAggregator, _errorNotifier, _windsorContainer));

DetailTabs = new ObservableCollection<TabViewModel> { valuationTab };

主要 XAML
                            <TabControl Margin="0,-2,0,0" x:Name="SelectionTabs" Style="{StaticResource DetailTabControl}" ItemsSource="{Binding DetailTabs}" 
SelectedValue="{Binding SelectedTab, Mode=TwoWay}" ItemContainerStyle="{StaticResource DetailTabItem}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Header}" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<TextBlock Text="{Binding Content}" />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>

我希望它使用的内容样式模板
<DataTemplate x:Key="ValuationTabTemplate" DataType="{x:Type detailTabs1:ValuationTabViewModel}" >
<detailTabs:ValuationTab Margin="0,10,0,10" />
</DataTemplate>

还有我的 Tab 项 ViewModel 类
public class TabViewModel : ViewModelBase
{
private string _header;
private BaseTabContentViewModel _content;

public string Header
{
get => _header;
set
{
_header = value;
RaisePropertyChanged(nameof(Header));
}
}

public BaseTabContentViewModel Content
{
get => _content;
set
{
_content = value;
RaisePropertyChanged(nameof(Content));
}
}

public TabViewModel(string header, BaseTabContentViewModel viewModel)
{
Header = header;
Content = viewModel;
}
}

最佳答案

删除 <TabControl.ContentTemplate>元素并定义一个隐式 DataTemplate (没有 x:Key )每种类型:

<TabControl Margin="0,-2,0,0" x:Name="SelectionTabs" Style="{StaticResource DetailTabControl}" ItemsSource="{Binding DetailTabs}" 
SelectedValue="{Binding SelectedTab, Mode=TwoWay}" ItemContainerStyle="{StaticResource DetailTabItem}">
<TabControl.Resources>
<DataTemplate DataType="{x:Type detailTabs1:ValuationTabViewModel}">
<detailTabs:ValuationTab Margin="0,10,0,10" />
</DataTemplate>
</TabControl.Resources>
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Header}" />
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>

关于c# - TabControl 未找到 TabControl 项的数据模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50353014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com