XAML 有没有办法在ResourceDictionary中定义的样式中指定数据类型?

acruukt9  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(190)

考虑UserControl的以下xaml定义:

<UserControl x:Class="Demo.MyControl" x:Name="self">
    <Grid Binding="{Binding ElementName=self}">
        <Grid.Style>
            <Style TargetType="{x:Type Grid}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=MyBooleanProperty}" Value="True">
                        <Setter Property="Background" Value="Red"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Grid.Style>
    </Grid>
</UserControl>

在上面的网格绑定中,我使用的是ElementName=self,它指向控件本身。这只是一个绑定的例子,其中DataTrigger使用的绑定源的数据类型在设计时是已知的。另一个例子是在DataTemplate中定义一个样式,该样式具有DataType属性。
我想把本地定义的样式提取到ResourceDictionary中,但是如果样式是如上定义的,例如Path属性,那么数据类型在设计时不可用,xaml编辑器不能提供我所拥有的intellisense支持。
有没有办法在ResourceDictionary中定义的样式中指定数据类型?

dddzy1tm

dddzy1tm1#

我唯一能想到的是使用d:DataContext属性,它可以提示正确的方向,不幸的是,我的VS在样式上不接受它。
除此之外,我不认为有任何有意义的方法来解决这个问题,因为一个样式可以应用于TargetType的任何元素,而设计师不知道它将应用于哪些元素。

相关问题