如何在Model里面的类中弹出childwindow?

时间:2014-10-01 11:31:36

标签: c# .net wpf silverlight mvvm

我在silverlight5工作,我不得不显示一个错误消息框(由我使用childwindow制作)。我使用MVVM方法和问题的情况是这样的,我必须 当出现问题时,在Model类中弹出该错误消息。

我是在模型类中执行此操作( cfw.Show()):

public static void ShowSmallMessageWithResult(string message) 
{
    ConfirmationWindow cfw = new ConfirmationWindow();
    cfw.SetMessage(message);
    cfw.Show();
}

ConfirmationWindow.xaml是:

<silvercontrols:ChildWindow x:Class="Model.MessageFolder.ConfirmationWindow"
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
           xmlns:silvercontrols="clr-namespace:Silverlight.Windows.Controls;assembly=Silverlight.Windows.Controls"
           xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
          xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"
           Title="Message" Width="Auto" Height="Auto" MouseRightButtonDown="ChildWindow_MouseRightButtonDown">

    <silvercontrols:ChildWindow.Style>
        <StaticResource ResourceKey="MessageBoxStyle"/>
    </silvercontrols:ChildWindow.Style>

    <Grid x:Name="LayoutRoot" MinWidth="360">
        <StackPanel Orientation="Vertical">
            <TextBlock x:Name="MessageBox" Margin="10 15 0 0" Height="Auto" FontSize="12" Text="Text" Foreground="White" TextWrapping="Wrap" HorizontalAlignment="Left" />
            <StackPanel x:Name="ContentBox" Margin="10 15 0 0" Height="Auto" Orientation="Horizontal"></StackPanel>
            <StackPanel Margin="0 0 0 10" Orientation="Horizontal" HorizontalAlignment="Center" Height="45">
                <Button x:Name="YesBtn" Content="Yes" Width="82" HorizontalAlignment="Left" VerticalAlignment="Bottom" Style="{StaticResource ButtonStyle_Blue}"/>
                <Button x:Name="NoBtn" Content="No" Margin="60 0 0 0" Width="82" HorizontalAlignment="Right" VerticalAlignment="Bottom" Style="{StaticResource ButtonStyle_Blue}"/>
            </StackPanel>
        </StackPanel>
    </Grid>
</silvercontrols:ChildWindow>

和ConfirmationWindow.xaml.cs是:

using System.Windows;   
namespace Model.MessageFolder
{
    public partial class ConfirmationWindow : Silverlight.Windows.Controls.ChildWindow
    {
        private bool showBtnClose;
        public ConfirmationWindow(bool showBtnClose = false)
        {
            InitializeComponent();
            HasCloseButton = showBtnClose;
            this.showBtnClose = showBtnClose;
            NoBtn.Click += Close;
        }

        #region METHODS
        public void SetMessage(string message)
        {
            MessageBox.Text = message;
        }
        public void AddContent(UIElement elt)
        {
            ContentBox.Children.Add(elt);
        }
        #endregion

        #region EVENT_HANDLER
        public void Close(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
        #endregion

        private void ChildWindow_MouseRightButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            e.Handled = true;
        }
    }
}

问题是不要弹出任何错误消息框(我的意思是这个chiildwindow)。我不知道为什么?

注意:请注意,ConfirmationWindow.xaml位于Model文件夹中。我知道这不是一个好方法,但因为它是一个现有的应用程序所以我必须用我更漂亮的{{{}替换所有MessageBox.show() 1}}

为什么不工作?如何使它工作?

0 个答案:

没有答案