按钮不会出现在窗口上

时间:2014-04-28 17:18:25

标签: c# wpf

我有一个ErrorControl类来处理发送到此控件的文本,并将其显示在窗口中。随着窗口中的文本,我有一个应该显示的btnOk。所以一个只有标签和按钮的窗口。带有错误的标签显示正常,但按钮不显示。

代码背后的代码:

        public void showErrorMessage(String error, String title)
    {
        ErrorControl errorMessage = new ErrorControl();
        errorMessage.errStack.Children.Remove(errorMessage.lblError);
        errorMessage.lblError.Content = error.ToString();
        errorMessage.errStack.Children.Add(errorMessage.lblError);
        Window wind = new Window()
        {
            Content = error,
            Title = title,
            SizeToContent = SizeToContent.WidthAndHeight,
            ResizeMode = ResizeMode.NoResize,
            WindowStyle = WindowStyle.ToolWindow
        };

        wind.ShowDialog();
    }

XAML:

    <Grid Name="Main">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
            </Grid.RowDefinitions>
    <StackPanel Name="errStack">
        <Label Name="lblError" Content="{Binding Path=ErrorMessage}" />
    </StackPanel>
    <Button Name="btnOk" Content="Ok" Grid.Row="1" HorizontalAlignment="Center" MinWidth="75" VerticalAlignment="Center" Click="btnOk_Click"/>

</Grid>

</Grid>

这就是我发送错误的方式

                    String error = "myerror";
                ErrorControl errorControl = new ErrorControl();
                errorControl.showErrorMessage(error, "Error Message");

为什么我的按钮没有出现在我的窗口中?它在我的xaml中定义。

1 个答案:

答案 0 :(得分:2)

您的问题是您将错误文本而不是ErrorControl分配给Window.Content

修正:

Window wind = new Window()
{
    Content = errorMessage, // << your problem is here
    Title = title,
    SizeToContent = SizeToContent.WidthAndHeight,
    ResizeMode = ResizeMode.NoResize,
    WindowStyle = WindowStyle.ToolWindow
};

此外,我想补充一点,您的代码存在设计问题。 showErrorMessage至少应该是静态的,因此您不必创建ErrorControl并只需调用

ErrorControl.showErrorMessage(error, "Error Message");