2013-04-27 2 views
0

도구 키트에서 Silverlight 사용 표시기 컨트롤을 사용하고 UI에 대한 사용자 지정 서식 파일을 적용하려고합니다. 이Silverlight 통화 중 표시기 사용자 지정 템플릿

<UserControl x:Class="CustomBusyIndicator.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:controlsToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" 
      xmlns:ed="clr-namespace:Microsoft.Expression.Shapes;assembly=Microsoft.Expression.Drawing" 
      mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="400"> 

    <controlsToolkit:BusyIndicator IsBusy="True" 
    BusyContent="{Binding}" Margin="0,0,0,0" > 

     <!-- Provide custom UI for busy display --> 
     <controlsToolkit:BusyIndicator.BusyContentTemplate> 
      <DataTemplate > 
       <StackPanel Width="307" Height="32"> 
       <Grid x:Name="LayoutRoot" Background="#8EBD40" > 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="73"></ColumnDefinition> 
         <ColumnDefinition Width="Auto"></ColumnDefinition> 
        </Grid.ColumnDefinitions> 

        <Canvas Width="30" Height="30" Grid.Column="0"> 
         <ed:Arc ArcThickness=".7" ArcThicknessUnit="Pixel" EndAngle="360" Stretch="None" Stroke="White" StartAngle="90" Fill="White" UseLayoutRounding="False" Width="30" Height="30"/> 
         <Canvas.RenderTransform> 
          <RotateTransform x:Name="SpinnerRotate" Angle="0" CenterX="15" CenterY="15"  /> 
         </Canvas.RenderTransform> 
         <Canvas.Triggers> 
          <EventTrigger RoutedEvent="ContentControl.Loaded"> 
           <BeginStoryboard> 
            <Storyboard> 
             <DoubleAnimation Storyboard.TargetName="SpinnerRotate" 
           Storyboard.TargetProperty="(RotateTransform.Angle)" 
           From="0" To="360" Duration="0:0:01" 
           RepeatBehavior="Forever" /> 
            </Storyboard> 
           </BeginStoryboard> 
          </EventTrigger> 
         </Canvas.Triggers> 
        </Canvas> 
        <TextBlock Grid.Column="1" FontWeight="Thin" FontSize="25" Foreground="White" FontFamily="Verdana" VerticalAlignment="Center" HorizontalAlignment="Center">Uploading....</TextBlock> 
       </Grid> 
       </StackPanel> 
      </DataTemplate> 
     </controlsToolkit:BusyIndicator.BusyContentTemplate> 

     <!-- Remove unnecessary default ProgressBar --> 
     <controlsToolkit:BusyIndicator.ProgressBarStyle> 
      <Style TargetType="ProgressBar"> 
       <Setter Property="Visibility" Value="Collapsed"/> 
      </Style> 
     </controlsToolkit:BusyIndicator.ProgressBarStyle> 

     <!-- Content goes here... --> 

    </controlsToolkit:BusyIndicator> 
</UserControl> 

모든 제외하고, 잘 될 것 같은 XAML 코드는 컨텐츠 템플릿 주위에 온다 회색 테두리가 보인다. 재정의 할 수있는 방법이 있습니까?

답변

0

당신이 BusyIndicator의 원래 템플릿을 선택하면, 당신은 변경할 필요가 국경을 찾을 수 있습니다 :

그래서
<Style TargetType="controlsToolkit:BusyIndicator"> 
     <Setter Property="BusyContent" Value="Please wait..."/> 
     <Setter Property="IsTabStop" Value="False"/> 
     <Setter Property="OverlayStyle"> 
      <Setter.Value> 
       <Style TargetType="Rectangle"> 
        <Setter Property="Fill" Value="White"/> 
        <Setter Property="Opacity" Value="0.5"/> 
       </Style> 
      </Setter.Value> 
     </Setter> 
     <Setter Property="ProgressBarStyle"> 
      <Setter.Value> 
       <Style TargetType="ProgressBar"> 
        <Setter Property="IsIndeterminate" Value="True"/> 
        <Setter Property="Height" Value="15"/> 
        <Setter Property="Margin" Value="8,0,8,8"/> 
       </Style> 
      </Setter.Value> 
     </Setter> 
     <Setter Property="DisplayAfter" Value="00:00:00.1"/> 
     <Setter Property="HorizontalAlignment" Value="Stretch"/> 
     <Setter Property="VerticalAlignment" Value="Stretch"/> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
     <Setter Property="VerticalContentAlignment" Value="Stretch"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="controlsToolkit:BusyIndicator"> 
        <Grid> 
         <VisualStateManager.VisualStateGroups> 
          [states go here] 
         </VisualStateManager.VisualStateGroups> 
         <ContentControl 
          x:Name="content" 
          Content="{TemplateBinding Content}" 
          ContentTemplate="{TemplateBinding ContentTemplate}" 
          HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" 
          VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/> 
         <Rectangle 
          x:Name="overlay" 
          Style="{TemplateBinding OverlayStyle}"/> 
         <ContentPresenter 
          x:Name="busycontent"> 
          <Grid HorizontalAlignment="Center" 
            VerticalAlignment="Center"> 
           <Border Background="White" 
             BorderThickness="1" 
             CornerRadius="2"> 
            <Border.BorderBrush> 
             <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
              <GradientStop Color="#FFA3AEB9" Offset="0"/> 
              <GradientStop Color="#FF8399A9" Offset="0.375"/> 
              <GradientStop Color="#FF718597" Offset="0.375"/> 
              <GradientStop Color="#FF617584" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.BorderBrush> 
            <Border CornerRadius="1.5" 
              Margin="1"> 
             <Border.Background> 
              <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
               <GradientStop Color="#FFF6F8F9" Offset="0.02"/> 
               <GradientStop Color="#FFB8B8B8" Offset="0.996"/> 
              </LinearGradientBrush> 
             </Border.Background> 
             <Grid MinWidth="150"> 
              <Grid.RowDefinitions> 
               <RowDefinition/> 
               <RowDefinition Height="Auto"/> 
              </Grid.RowDefinitions> 
              <ContentPresenter Content="{TemplateBinding BusyContent}" 
                   ContentTemplate="{TemplateBinding BusyContentTemplate}" 
                   Margin="8"/> 
              <ProgressBar Grid.Row="1" 
                  Style="{TemplateBinding ProgressBarStyle}"/> 
             </Grid> 
            </Border> 
           </Border> 
          </Grid> 
         </ContentPresenter> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

짧은 :

<Border Background="White" 
     BorderThickness="1" 
     CornerRadius="2"> 

그냥 경계를 확인하고 그 구조를 모방 포함되어 있습니다.

관련 문제