如何在SL4中将OK / CANCEL中的按钮文本更改为YES / NO?

时间:2012-05-31 14:56:04

标签: silverlight silverlight-4.0

SL 4通过MessageBox提供了一个对话框,但MessageBoxButton只为按钮提供了OK,Cancel选项。如何将其更改为YES,NO按钮?

2 个答案:

答案 0 :(得分:1)

内置于silverlight中的MessageBox无法更改,不会超出公开的功能。

您唯一的解决方案是创建一个自定义的ChildWindow类,它提供您想要的功能。 manyexamples 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;
        }
    }

如果您不想创建自己的弹出窗口,可能会有第三方消息框,但使用此解决方案,您可以自己动手。