是否可以为样式指定数据上下文的类型?

时间:2015-12-04 22:47:14

标签: c# wpf

我正在使用样式和模板来动态构建功能区菜单的WPF应用程序,以下是相关的片段:

<RibbonTab x:Name="HomeTab" Header="Home" HorizontalAlignment="Stretch" ItemContainerStyle="{StaticResource GroupStyle}" ItemsSource="{Binding Groups}"/>

<Style TargetType="RibbonGroup" x:Key="GroupStyle">
    <Setter Property="Header" Value="{Binding Header}" />
    <Setter Property="ItemsSource" Value="{Binding Controls}"/>
    <Setter Property="ItemTemplate" Value="{StaticResource RibbonButtonTemplate}"/>
</Style>

<DataTemplate x:Key="RibbonButtonTemplate" DataType="{x:Type enums:RibbonControlConfig}">
    <RibbonButton Label="{Binding Header}" LargeImageSource="{Binding Image}" Command="{Binding Command}"/>
</DataTemplate>

现在Resharper正在抱怨GroupStyle中的绑定,因为它们实际上是视图模型的子属性的元素,这可以通过RibbonTab上的ItemSource绑定看出。

这当然功能很好,我只是希望ReSharper没有投诉并获得准确的Intellisense,所以无论如何都要告诉风格它的背景是什么?

附注:我首先尝试使用嵌套数据模板进行此设置,但我无法通过第一级模板工作。

1 个答案:

答案 0 :(得分:1)

不,无法在样式中指定DataContext类型。通常,您不应该在样式中使用绑定,因为样式与外观有关,而与数据无关。如果您计划使控件可重复使用,则遵循此规则尤为重要:您无法对其绑定的内容进行假设。