我有一个嵌入在TabControl的TabItem中的自定义控件。 TabControl是主要Usercontrol的内容,如下所示:
<UserControl x:Class="ControlsLibrary.wpf.Alerts.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">
<Grid>
<TabControl DataContext="{Binding Filter}">
<TabItem>
<mc:CustomControl DataContext="{Binding Options}"
</TabItem>
</TabControl>
</Grid>
</UserControl>
我的理解是我的自定义控件将继承TabControl的DataContext,因此我的自定义控件的DataContext应设置为Filter对象的“Options”属性,即TabControl的DataContext。但是,Visual Studio的输出窗口指示它正在父UserControl的DataContext中查找选项。
即使我使用Binding类的ElementName属性,我仍然无法更改自定义控件的DataContext,即使数据项的属性“Filter”实现了INotifyPropertyChanged。
我错过了什么?
TIA。
答案 0 :(得分:0)
我前一段时间看到了类似的问题(但不是Tab控制问题,所以我的抱怨,如果这不起作用),我需要将CustomControl
设置为控件模板TabItem
。
<TabControl DataContext="{Binding Filter}">
<TabItem>
<TabItem.Template>
<ControlTemplate>
<mc:CustomControl DataContext="{Binding Options}" />
</ControlTemplate>
</TabItem.Template>
</TabItem>
</TabControl>
实际上会影响继承层次结构中CustomControl
的逻辑和视觉定位。
试试这个让我知道它是否有效
HTH