SL 4通过MessageBox提供了一个对话框,但MessageBoxButton只为按钮提供了OK,Cancel选项。如何将其更改为YES,NO按钮?
答案 0 :(得分:1)
内置于silverlight中的MessageBox无法更改,不会超出公开的功能。
您唯一的解决方案是创建一个自定义的ChildWindow类,它提供您想要的功能。 many有examples this。
这样做的好处就是可以像其他的Silverlight弹出窗口一样,无论您喜欢什么样的按钮和功能,都可以使用主题和皮肤。
这样做的缺点是你被迫使用回调模型而不是更常见的命令式流控制。
答案 1 :(得分:0)
最好的办法是使用System.Windows.Controls.Primitives.Popup
<Grid x:Name="LayoutRoot" Background="White">
<Button x:Name="showPopup" Click="showPopup_Click" Height="100" Width="100" Content="Show Popup"/>
<Popup x:Name="myPopup" IsOpen="False" VerticalAlignment="Top" HorizontalAlignment="Center" >
<Canvas Height="200" Width="300" Background="Azure">
<Button x:Name="closePopup" Click="closePopup_Click" Height="50" Width="100" Content="Close Popup"/>
</Canvas>
</Popup>
<Canvas x:Name="myCanvas" Visibility="Collapsed" Background="Black" Opacity=".4"></Canvas>
</Grid>
public partial class Page : UserControl
{
public Page()
{
InitializeComponent();
}
private void closePopup_Click(object sender, RoutedEventArgs e)
{
myPopup.IsOpen = false;
myCanvas.Visibility = Visibility.Collapsed;
}
private void showPopup_Click(object sender, RoutedEventArgs e)
{
myPopup.IsOpen = true;
myCanvas.Visibility = Visibility.Visible;
}
}
如果您不想创建自己的弹出窗口,可能会有第三方消息框,但使用此解决方案,您可以自己动手。