Sim*_*mon 0 wpf xaml tabcontrol tabitem
我创建了继承自 TabItem 的 CustomTabItem,我想在 TabControl 中绑定 ObservableCollection 时使用它
<TabControl ItemsSource="{Binding MyObservableCollection}"/>
Run Code Online (Sandbox Code Playgroud)
它应该在 XAML 中是这样,但我不知道如何在绑定时更改 TabControl 创建的输出项的默认类型。
我尝试创建转换器,但它必须在 convertin 方法中执行以下操作:
List<CustomTabItem> resultList = new List<CustomTabItem>();
Run Code Online (Sandbox Code Playgroud)
并遍历我的输入 ObservableCollection,根据集合中的项目创建我的 CustomTab 并将其添加到 resultList ...
我想避免它,因为在创建 CustomTabItem 时我正在创建复杂的 View 并且需要一段时间,所以我不想在绑定集合中发生变化时总是创建它。
我的课程扩展了典型的 TabItem,我想在 TabControl 而不是 TabItem 中使用这个类。
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type local:CustomTabItem}">
<Setter Property="MyProperty" Value="{Binding xxx}"/>
</Style>
</TabControl.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)
上面的代码会生成错误,指出样式无法应用于 TabItem。
我的主要目的是在 XAML 中使用我自己的 CustomTabItem 并绑定属性......就像上面一样......
我也尝试使用
<TabControl.ItemTemplate/>
<TabControl.ContentTemaplte/>
Run Code Online (Sandbox Code Playgroud)
但它们只是 TabItem 的样式,所以我仍然会缺少我在自定义类中添加的属性。
您需要创建一个从 TabControl 派生的自定义类并覆盖 GetItemForContainerOverride 以返回您的自定义 TabItem:
protected override DependencyObject GetContainerForItemOverride()
{
return new CustomTabItem();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4332 次 |
| 最近记录: |