【问题标题】:How to make usercontrol on topmost in wpf?如何使用户控件在 wpf 的最顶层?
【发布时间】:2011-09-24 19:14:09
【问题描述】:

我有一个包含三行的网格。 第一行包含哪个显示工具栏。 第二行包含显示状态栏。 第三行包含绑定到可观察集合的数据的列表框。

当满足某些条件时,我需要显示弹出窗口。

我想用popup,popup的问题是当我移动窗口时它不会随着父控件一起移动。

所以我决定创建一个用户控件(比如 mypopup),它以编程方式添加到具有更高 ZIndex 的第二行,问题是即使我设置了更高的索引,它也会落后于 ListboxItems。

a) 有什么解决办法吗?

作为一种解决方案,我想为该用户控件(mypopup)使用 Adorner,问题是我的用户控件(mypopup)包含 Button 和 Checkbox,在应用 adorner 后这些控件无法访问。

b) 任何想法让我的用户控件与装饰器交互?

【问题讨论】:

    标签: wpf popup adorner


    【解决方案1】:

    装饰器不会给你交互性。他们只是基于绘图。因此,除非您“模拟”它,否则它们不会像用户控件那样做出反应。所以让我们暂时把它们放在一边。

    仅使用弹出窗口。设置它们的放置目标和放置方向。下面的弹出窗口位于按钮的左上角。

            popup.PlacementTarget = MyButton;
            popup.Placement = PlacementMode.Relative;
    

    它沿着放置目标移动,即 MyButton。为此,我更改了按钮的边距并相应地弹出移动。要实现此效果,您需要隐藏弹出窗口并重置其放置目标。

            popup.IsOpen = false;
            popup.PlacementTarget = null;
            MyButtonMargin = new Thickness(MyButton.Margin.Left + 10);
            popup.PlacementTarget = MyButton;
            popup.IsOpen = true; 
    

    如果这有帮助,请告诉我。

    【讨论】:

      【解决方案2】:
      <Window...>
      <Grid>
         <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
         </Grid.RowDefinitions>
      
         <Toolbar Grid.Row="0" ... />
         <Statusbar Grid.Row="1" ... />
         <ListBox Grid.Row="2" ... />
      
         <OverlayControl Grid.Row="0" Grid.RowSpan="3" 
                         HorizontalAlignment="Stretch" 
                         VerticalAlignment="Stretch" />
      </Grid>
      </Window>
      

      叠加控制:

      <UserControl ...>
      <Grid Background="#30000000">
         <Border HorizontalAlignment="Center" VerticalAlignment="Center" ...>
              Content, e.g. TextBlock with a message 
         </Border>
      </Grid>
      </UserControl>
      

      不要在用户控件上设置宽度,因为它应该伸展,如果需要,请使用 d:DesignWidth/Height。顺序很重要,最后一个在同一排的其他人之上。如果您希望它只占据第 3 行,请更改行和行跨度。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 2011-10-14
        • 2012-03-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多