【问题标题】:How to set BusyIndicator to the center of window?如何将 BusyIndi​​cator 设置为窗口的中心?
【发布时间】:2011-11-16 07:10:39
【问题描述】:

WPF: 将 BusyIndi​​cator 设置为窗口的中心

【问题讨论】:

    标签: wpf busyindicator


    【解决方案1】:

    使用HorizontalAlignment ="Center"VerticalAlignment="Center" 附加属性。

    例如:

    <Windows>
        <Grid>
    
        <extToolkit:BusyIndicator IsBusy="True" HorizontalAlignment ="Center" VerticalAlignment="Center"/>
    
        </Grid>
    </Window>
    

    如果您希望控件能够控制 Windows 上的所有内容,我认为您应该将其放置在弹出窗口中并通过代码控制弹出窗口的位置。

    作为最后的手段,您可以将 BusyIndi​​cator 放置在一个单独的无板 WPF 窗口中,以将其置于 WindowsFormsHost 之上。

    为了保持弹出窗口对其父窗口的粘性,只需在每次激活父窗口时调用 popup.Activate()。这样,如果其他一些应用程序窗口超出您的窗口,弹出窗口和父窗口都将位于当前活动窗口的下方。用户激活父窗口的那一刻,它会在弹出窗口上调用 activate,这样它们看起来就粘在一起了。我知道,这是一个诡计。也许有人有更好的解决方案。

    【讨论】:

    • 那些不是附加属性,在(垂直)StackPanel 中设置VerticalAlignment 没有任何作用。
    • 谢谢马克西姆。如果有其他控件,例如网格、WindowsFormsHost,则会失败。我需要 BusyIndi​​cator 位于一切之上并成为窗口的中心,并与窗口相关联。谢谢。
    • @WPF new - 我会使用 Popup 作为 BusyIndi​​cator 的主机。这将允许您通过 WindowsFormsHost 拥有它。
    • 嗨马克西姆,我试过弹出窗口。它在 WindowsFormsHost 之后,并且不绑定到所有者窗口并显示每个窗口。谢谢。
    • @WPF new - 如果 WPF 控件与 WindowsFormsHost 位于相同的窗口上 - 您无法将 WPF 控件置于 WinForms 之上,因为它与 z 顺序无关。这就是我推荐弹出窗口的原因,因为它与您的 WPF 窗口分离,因此可以通过 WinFormsHost。您可以将 BusyIndi​​cator 放在无边框的窗户中,以确保它位于顶部。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 2016-03-22
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多