HandyControl通知显示问题
如果你用过HandyControl的Demo,会发现默认的Notification通知都是在右上角显示的,但是有的时候我想自定义显示的位置,该怎么办呢?
这个问题在官方文档中也没有提到,通过让GPT读取项目源码,得出了一个解决办法,就是在主窗口中创建一个透明的ScrollViewer,让每一个Notification通知都在这里面显示,这样就可以了,下面是相关代码
XML
你只需要控制<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ScrollViewer
Grid.Column="1"
HorizontalAlignment="Right"
IsHitTestVisible="False"
VerticalScrollBarVisibility="Hidden">
<StackPanel
Margin="0,10,10,10"
VerticalAlignment="Bottom"
hc:Growl.GrowlParent="True" />
</ScrollViewer>
</Grid>
ScrollViewer和StackPanel的布局,就可以让Notification显示在任意一个角落了 在设置的时候需要注意这几个要点:
-
不应该单独给
ScrollViewer添加一列,而是让ScrollViewer使用现有的列,比如以上让Scrollviewer处在第二列,真正写控件的时候,第二列也有相关控件 -
需要考虑设置
IsHitTestVisible,这样当显示Notification的时候,不至于出现右侧明明是空白的,但是无法点击ScrollViewer下面的控件,使ScrollViewer具有穿透性