我有一个Catel用户控件,它将作为我的标签项。
我有一个带有以下样式的标签控件:
<Grid.Resources>
<Style x:Key="ShellTabItemStyle" TargetType="TabItem">
<Setter Property="HeaderTemplate">
<Setter.Value>
<!--Display the child view name on the tab header-->
<DataTemplate>
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}, Mode=FindAncestor}, Path=Header}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<TabControl Grid.Row="0" Margin="10,10,10,0" ItemContainerStyle="{StaticResource ShellTabItemStyle}">
<views:OpsReport01ParameterView />
<views:NonCompliantTradesParameterView />
<views:AuditReportParameterView />
</TabControl>
我的UserControl实现了一个指定Header属性的接口。有没有办法施放&#39; UserControl&#39;到接口IMyInterface?我曾尝试使用IMyInterface作为AncestorType,但这似乎不起作用。
答案 0 :(得分:0)
尝试扩展UserControl
类并将Header DependencyProperty
添加到新类中:
public partial class YourUserControl : UserControl
{
// Declare Header DependencyProperty here
}
然后在您的其他自定义UserControl
中,扩展此YourUserControl
&#39; base&#39; class而不是UserControl
类:
public partial class AuditReportParameterView : YourUserControl
{
...
}
// etc.
然后,您可以在YourUserControl
中使用RelativeSource Binding
作为所有派生类的类型:
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type
YourPrefix:YourUserControl}}, Path=Header}" />