我相信你可以编辑BusyIndicator的模板,但是,我没有表达式混合,我不熟悉这样做。有没有人有我可以开始的样本XAML?
我认为混合只是让它更容易完成,但我不确定如何从标准的VS.NET开始。
答案 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,只需添加取消按钮。
注意:我正在使用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>