在Silverlight 4中,如何在BusyIndi​​cator控件中添加取消按钮?

时间:2011-01-05 16:08:37

标签: silverlight xaml silverlight-4.0

我相信你可以编辑BusyIndi​​cator的模板,但是,我没有表达式混合,我不熟悉这样做。有没有人有我可以开始的样本XAML?

我认为混合只是让它更容易完成,但我不确定如何从标准的VS.NET开始。

2 个答案:

答案 0 :(得分:2)

不需要使用Expression Blend - 您可以简单地为控件提供BusyContentTemplate。 Silverlight Toolkit示例在此处演示了这一点:http://www.silverlight.net/content/samples/sl4/toolkitcontrolsamples/run/default.html。复制并粘贴这些示例中的代码段:

<controlsToolkit:BusyIndicator IsBusy="True" DisplayAfter="0">
    <controlsToolkit:BusyIndicator.BusyContentTemplate>
        <DataTemplate>
            <StackPanel Margin="4">
                <TextBlock Text="Downloading Email" FontWeight="Bold" HorizontalAlignment="Center"/>
                <StackPanel Margin="4">
                    <TextBlock Text="Downloading message 4/10..."/>
                    <ProgressBar Value="40" Height="15"/>
                </StackPanel>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition/>
                        <ColumnDefinition/>
                    </Grid.ColumnDefinitions>
                    <Button Grid.Column="0" Content="Pause" HorizontalAlignment="Right" Margin="0 0 2 0"/>
                    <Button Grid.Column="1" Content="Cancel" HorizontalAlignment="Left" Margin="2 0 0 0"/>
                </Grid>
            </StackPanel>
        </DataTemplate>
    </controlsToolkit:BusyIndicator.BusyContentTemplate>
</controlsToolkit:BusyIndicator>

希望这会有所帮助......

克里斯

答案 1 :(得分:1)

此xaml通过使用Toolkit源代码中的标准示例XAML(由Chris发布)解决了我遇到的2个问题。我还简化了XAML,只需添加取消按钮。

  1. 数据绑定(请参阅此处:http://forums.silverlight.net/forums/p/163280/368692.aspx
  2. 隐藏默认进度条,b / c一旦使用数据模板,您应该使用自己的进度条,这样就可以控制定位
  3. 注意:我正在使用Caliburn Micro for MVVM,如果你没有使用MVVM,你可能只需使用普通的点击事件处理程序来取消按钮。

    代码示例:

    <Controls:BusyIndicator IsBusy="{Binding IsBusy}" BusyContent="{Binding}">
        <Controls:BusyIndicator.BusyContentTemplate>
            <DataTemplate>
                <StackPanel Margin="4">
                    <TextBlock Text="{Binding BusyContent}" FontWeight="Bold" HorizontalAlignment="Center" Margin="2"/>
                    <ProgressBar IsIndeterminate="True" Height="15" Margin="2"/>
                    <Button cal:Message.Attach="CancelBusyIndicator()" Content="Cancel"  HorizontalAlignment="Right" Margin="2 2 2 2"/>
                </StackPanel>
            </DataTemplate>
        </Controls:BusyIndicator.BusyContentTemplate>
        <Controls:BusyIndicator.ProgressBarStyle>
            <Style TargetType="ProgressBar">
                <Setter Property="Visibility" Value="Collapsed"/>
            </Style>
        </Controls:BusyIndicator.ProgressBarStyle>