BusyIndicator 需要“在顶部”才能位于控件的前面。这使得它在设计师中也名列前茅。
可能有更好的方法来解决这个问题,但想到的是让 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>
我已将 BusyIndicator 添加为具有“TheBusyIndicator”键的资源。我还将 x:Name="LayoutRoot" 添加到将包含 BusyIndicator 的网格中。如果 Grid 实际上不是布局根控件,它当然可以有另一个名称。
通过最后将 BusyIndicator 添加到 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,而且我没有编辑器可以使用。所以我有一段时间没有看到这个问题了。