C# Avalonia用户界面弹出覆盖

C# Avalonia用户界面弹出覆盖,c#,reactiveui,avaloniaui,C#,Reactiveui,Avaloniaui,我的问题很直截了当: 如何使用avalonia实现叠加弹出效果 我的意思是,我想让包含UI元素的整个面板变暗一点。我尝试了一下“不透明度”属性,但它看起来不太好,而且“不透明度”似乎只支持透明作为一种颜色,但如果可能的话,我想要半透明甚至模糊。然后我想显示一个小弹出框。如果这是CSS,我可以做一个位置:绝对;,然而,我不知道如何使用avalonia实现这一点 下面是一些Windows窗体应用程序的屏幕截图,我在其中实现了预期效果: 我的UI没有覆盖效果: 具有叠加效果的我的UI: 正如您所看

我的问题很直截了当:

如何使用avalonia实现叠加弹出效果

我的意思是,我想让包含UI元素的整个面板变暗一点。我尝试了一下“不透明度”属性,但它看起来不太好,而且“不透明度”似乎只支持透明作为一种颜色,但如果可能的话,我想要半透明甚至模糊。然后我想显示一个小弹出框。如果这是CSS,我可以做一个位置:绝对;,然而,我不知道如何使用avalonia实现这一点

下面是一些Windows窗体应用程序的屏幕截图,我在其中实现了预期效果:

我的UI没有覆盖效果:

具有叠加效果的我的UI:

正如您所看到的,当使用avalonia Opacity属性时背景仍然可见时,整个UI已经变暗了一点。效果不一样,也不一致,因为给定位置上的面板越多,背景受不透明度的影响就越小,而且看起来不太好。如果你愿意的话,我可以添加屏幕截图,说明以后会有多糟糕

总而言之:

一,。如何使颜色稍微持续变暗甚至模糊?一个包含所有内容的面板,这样具有相同背景颜色的堆叠面板就不会因为透明度表现怪异而变得可见


二,。什么是阿瓦隆亚相当于CSS的立场:绝对;所以我可以把我的弹出窗口放在屏幕中间,放在其他东西的最上面?

你可以使用与WPF相同的技术:

<Window>
   <Grid>
      <DockPanel x:Name="YourMainContentGoesHere"/>
      <Border IsVisible="{Binding IsPopupVisible}" Background="#40000000">
          <YourPopupControlHere Width="200" Height="200"/>
      </Border>   
   </Grid>
</Window>

未配置的网格将显示彼此重叠的元素,半透明边框的背景将使其余内容变暗。

您可以使用与WPF中相同的技术:

<Window>
   <Grid>
      <DockPanel x:Name="YourMainContentGoesHere"/>
      <Border IsVisible="{Binding IsPopupVisible}" Background="#40000000">
          <YourPopupControlHere Width="200" Height="200"/>
      </Border>   
   </Grid>
</Window>
未配置的网格将显示相互重叠的元素,半透明边框的背景将使其余内容变暗