1

我的 UserControl 上有一个 RadBusyIndi​​cator,如下所示:

<Grid>
    <!-- Other Content -->
    <t:RadBusyIndicator IsBusy="{Binding IsBusy}"></t:RadBusyIndicator>
</Grid>

每当我在设计视图中单击时,它都会转到 BusyIndi​​cator。

我可以将 Panel.ZIndex 设置为负值以选择“其他内容”,但这会导致 RadBusyIndi​​cator 位于“其他内容”后面

我尝试使用 ZIndex 的绑定,如下所示:

<t:RadBusyIndicator Panel.ZIndex="{Binding BusyZIndex}" IsBusy="{Binding IsBusy}"></t:RadBusyIndicator>

但这无济于事。

所以问题是:

如何在所有“其他内容”的“顶部”上显示 RadBusyIndi​​cator,但仍然能够单击(在设计器中)并转到该控件的 xaml 行?

4

1 回答 1

1

BusyIndi​​cator 需要“在顶部”才能位于控件的前面。这使得它在设计师中也名列前茅。

可能有更好的方法来解决这个问题,但想到的是让 BusyPanel 成为 UserControl 上的 Resource,然后将其添加到 Grid 控件中 OnApplyTemplate 或通过代码加载。

这是 UserControl 的 XAML。

<UserControl x:Class="WpfApplication2.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:t="REFERENCE.TO.THE.RAD.ASSEMBLY" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <UserControl.Resources>
        <t:RadBusyIndicator x:Key="TheBusyIndicator" IsBusy="{Binding IsBusy}">
    </UserControl.Resources>
    <Grid x:Name="LayoutRoot">
        <Button Content="Some content to the button"
                Height="25"
                Width="200"/>
    </Grid>
</UserControl>

我已将 BusyIndi​​cator 添加为具有“TheBusyIndi​​cator”键的资源。我还将 x:Name="LayoutRoot" 添加到将包含 BusyIndi​​cator 的网格中。如果 Grid 实际上不是布局根控件,它当然可以有另一个名称。

通过最后将 BusyIndi​​cator 添加到 Children 集合,它将出现在由标记代码添加的所有其他控件的前面。

这是代码

UserControl 的构造函数:

public UserControl1()
{
    this.Loaded += new RoutedEventHandler(UserControl1_Loaded);
}

执行代码:

private void UserControl1_Loaded(object sender, RoutedEventArgs e)
{
    this.LayoutRoot.Children.Add(this.Resources["TheBusyIndicator"] as RadBusyIndicator);
}

我不再使用 UserControls,只使用 XAML 转到“Generic.xaml”的 CustomControls,而且我没有编辑器可以使用。所以我有一段时间没有看到这个问题了。

于 2012-12-28T23:39:40.683 回答