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>
你只需要控制ScrollViewerStackPanel的布局,就可以让Notification显示在任意一个角落了

在设置的时候需要注意这几个要点:

  1. 不应该单独给ScrollViewer添加一列,而是让ScrollViewer使用现有的列,比如以上让Scrollviewer处在第二列,真正写控件的时候,第二列也有相关控件

  2. 需要考虑设置IsHitTestVisible,这样当显示Notification的时候,不至于出现右侧明明是空白的,但是无法点击ScrollViewer下面的控件,使ScrollViewer具有穿透性