这是一个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}" />
但是它们不能使用参考资料中的隐式风格
2条答案
按热度按时间zysjyyx41#
不幸的是,
Flyout
没有Style
属性。如果您需要使用
Style
来执行此操作,则可以考虑使用Popup
。但是您需要实现一些行为来填补Flyout
和Popup
之间的差距。所以,我会直接设置
ShouldConstrainToRootBounds
。顺便说一句,这与这个问题没有直接关系,但是有一个旧的正在进行的issue关于在
UserControl
s中样式化Flyout
s。你知道的zkure5ic2#
你能告诉我们你使用的是哪个版本的WindowsAppSDK吗?
我建议你可以尝试更新到最新版本(WindowsAppSDK 1.4)。
ShouldConstrainToRootBounds="False"
在Windows AppSDK 1.4之前无法在winui 3中工作。有关更多详细信息,建议您可以参考Github:https://github.com/microsoft/microsoft-ui-xaml/issues/5958