Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建不干扰WPF窗口的独立线程MessageBox的最佳方法?_C#_Wpf_Messagebox - Fatal编程技术网

C# 创建不干扰WPF窗口的独立线程MessageBox的最佳方法?

C# 创建不干扰WPF窗口的独立线程MessageBox的最佳方法?,c#,wpf,messagebox,C#,Wpf,Messagebox,我有一个窗口,其中的字段允许用户填写值,但当我显示MessageBox以告诉用户某些字段无效时,它会阻止用户从MessageBox更改为窗口 我如何创建MessageBox,以便在拥有MessageBox的同时可以访问窗口?我应该多线程吗?有没有办法使MessageBox这样的对象不会锁定应用程序的其余部分 代码: MessageBox与显示它的表单是模态的 作为一种解决方法,您可以始终显示一个单独的wpf表单。或者,您可以在当前所在的表单上显示错误文本。消息框与显示它的表单是模态的 作为一种解

我有一个窗口,其中的字段允许用户填写值,但当我显示MessageBox以告诉用户某些字段无效时,它会阻止用户从MessageBox更改为窗口

我如何创建MessageBox,以便在拥有MessageBox的同时可以访问窗口?我应该多线程吗?有没有办法使MessageBox这样的对象不会锁定应用程序的其余部分

代码:


MessageBox与显示它的表单是模态的


作为一种解决方法,您可以始终显示一个单独的wpf表单。或者,您可以在当前所在的表单上显示错误文本。

消息框与显示它的表单是模态的


作为一种解决方法,您可以始终显示一个单独的wpf表单。或者,您可以在当前所在的表单上显示错误文本。

在这种情况下,在wpf表单上显示文本似乎更好。我不确定带有浮动验证messagebox的UI是否非常直观


更好的做法是查看wpf支持的即时验证内容,突出显示需要输入的必需项目。

在这种情况下,在wpf表单上显示文本可能会更好。我不确定带有浮动验证messagebox的UI是否非常直观


更好的做法是查看wpf支持的即时验证内容,在需要输入的地方突出显示所需的项目。

您可以在标记底部定义一个单独的网格,并通过将可见性设置为visible向用户显示带有消息的网格。然后捕捉窗口的鼠标点击,如果显示消息的网格可见,则将可见性设置为隐藏。下面是弹出式网格的示例

<Grid x:Name="MyMessageBox" Visibility="Hidden">
        <Grid Background="Black" Opacity="0.5"/>
        <Border
        MinWidth="250"
        Background="Orange" 
        BorderBrush="Black" 
        BorderThickness="1" 
        CornerRadius="0,55,0,55" 
        HorizontalAlignment="Center" 
        VerticalAlignment="Center">
            <StackPanel>
                <TextBlock Margin="5" Text="" Name="MessageText" FontWeight="Bold" FontFamily="Cambria" />
                </StackPanel>
            </StackPanel>
        </Border>
    </Grid>

您可以在标记的底部定义一个单独的网格,并通过将可见性设置为visible向用户显示带有消息的网格。然后捕捉窗口的鼠标点击,如果显示消息的网格可见,则将可见性设置为隐藏。下面是弹出式网格的示例

<Grid x:Name="MyMessageBox" Visibility="Hidden">
        <Grid Background="Black" Opacity="0.5"/>
        <Border
        MinWidth="250"
        Background="Orange" 
        BorderBrush="Black" 
        BorderThickness="1" 
        CornerRadius="0,55,0,55" 
        HorizontalAlignment="Center" 
        VerticalAlignment="Center">
            <StackPanel>
                <TextBlock Margin="5" Text="" Name="MessageText" FontWeight="Bold" FontFamily="Cambria" />
                </StackPanel>
            </StackPanel>
        </Border>
    </Grid>

项目已经高亮显示,但高亮显示不会告诉用户该字段无效的原因。工具提示已用于描述字段的用途。项目已高亮显示,但高亮显示不会告诉用户字段无效的原因。工具提示已经被用来描述该字段的用途。我最终这样做了,这允许我将消息作为状态窗口推送到单独的WPF窗口。我最终这样做了,这允许我将消息作为状态窗口推送到单独的WPF窗口。