XAML 样式不应用于嵌套控件

ddrv8njm  于 2023-10-14  发布在  其他
关注(0)|答案(2)|浏览(92)

这是一个WinUI 3项目,我试图在所有Flyout控件上设置两个隐式样式
ShouldConstrainToRootBounds = False
所有TeachingTip控件上的属性也相同。
这些控件嵌套在弹出型控件中
VisualStudio在弹出样式上显示intellisense错误 *ShouldConstrainToRootBounds无法识别或不可访问 *
虽然TeachingTip样式没有智能警告,但它不起作用

<UserControl.Resources>

    <Style TargetType="FlyoutPresenter" BasedOn="{StaticResource DefaultFlyoutPresenterStyle}">
        <Setter Property="ShouldConstrainToRootBounds" Value="False" /> 
        <Setter Property="Background" Value="Green"/>           
    </Style>

    <Style TargetType="TeachingTip" BasedOn="{StaticResource DefaultTeachingTipStyle}" >
        <Setter Property="ShouldConstrainToRootBounds" Value="False" />
        <Setter Property="Background" Value="Red"/>
    </Style>

</UserControl.Resources>

<Grid>
    <Button>
        <Button.Flyout>
            <Flyout>
                <StackPanel Orientation="Horizontal">

                    <ToggleSwitch
                        x:Name="cb_serial_flow_2"
                        IsOn="{x:Bind ViewModel.Serial, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                        OffContent="Counterpart Contracts"
                        OnContent="Serial Contract" />

                    <Button
                        x:Name="btn_teach_serial_flow"
                        Click="btn_show_t_tip_serial_flow_Click">
                    </Button>

                    <TeachingTip
                        Title="Serial Contract or Counterparts?"
                        Target="{x:Bind cb_serial_flow_2}" />
                        
                </StackPanel>

ShouldConstrainToRootBounds = False直接添加到控件中可以正常工作,即

<Flyout ShouldConstrainToRootBounds="False">

<TeachingTip
    ShouldConstrainToRootBounds="False"
    Title="Serial Contract or Counterparts?"
    Target="{x:Bind cb_serial_flow_2}" />

但是它们不能使用参考资料中的隐式风格

zysjyyx4

zysjyyx41#

不幸的是,Flyout没有Style属性。
如果您需要使用Style来执行此操作,则可以考虑使用Popup。但是您需要实现一些行为来填补FlyoutPopup之间的差距。
所以,我会直接设置ShouldConstrainToRootBounds
顺便说一句,这与这个问题没有直接关系,但是有一个旧的正在进行的issue关于在UserControl s中样式化Flyout s。你知道的

zkure5ic

zkure5ic2#

你能告诉我们你使用的是哪个版本的WindowsAppSDK吗?
我建议你可以尝试更新到最新版本(WindowsAppSDK 1.4)。
ShouldConstrainToRootBounds="False"在Windows AppSDK 1.4之前无法在winui 3中工作。
有关更多详细信息,建议您可以参考Github:https://github.com/microsoft/microsoft-ui-xaml/issues/5958

相关问题