Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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标准窗口?_C#_Wpf_Xaml_Blend - Fatal编程技术网

C# 如何用自定义窗口替换WPF标准窗口?

C# 如何用自定义窗口替换WPF标准窗口?,c#,wpf,xaml,blend,C#,Wpf,Xaml,Blend,现在我正在尝试使用c#创建一个语音识别助手(基本上是一个JARVIS程序)。我开始在VisualStudio中编写代码,代码运行后,我转到expression blend来处理UI 我已成功导入图像并在循环中设置动画。在那一点上,当我运行程序时,一切都正常(包括动画和语音识别)。然后,我的下一步是通过将标准窗口设置为透明,尝试用刚导入的图像“替换”标准窗口。使用这些窗格,我将所有画笔设置为“无画笔”,并将AllowTransparency设置为“true”。当我运行程序时,动画仍然有效,但程序停

现在我正在尝试使用c#创建一个语音识别助手(基本上是一个JARVIS程序)。我开始在VisualStudio中编写代码,代码运行后,我转到expression blend来处理UI

我已成功导入图像并在循环中设置动画。在那一点上,当我运行程序时,一切都正常(包括动画和语音识别)。然后,我的下一步是通过将标准窗口设置为透明,尝试用刚导入的图像“替换”标准窗口。使用这些窗格,我将所有画笔设置为“无画笔”,并将AllowTransparency设置为“true”。当我运行程序时,动画仍然有效,但程序停止运行所有语音识别代码

通过消除过程,我将问题隔离到背景笔刷和AllowTransparency函数。如果我将AllowTransparency设置为true,或者以任何方式弄乱背景笔刷,那么就不会有更多的语音识别

我不熟悉编码,所以我能想到的唯一原因(我甚至不知道这是否是原因)是语音识别目录和函数映射到窗口

发生这种情况有什么原因/有解决办法吗


编辑:添加代码

    public MainWindow()
    {
        InitializeComponent();
        Loaded += MainWindow_Loaded;
    }

    private void MainWindow_Loaded(object sender, EventArgs e)
    {
        _recognizer.SetInputToDefaultAudioDevice();
        _recognizer.LoadGrammar(new Grammar(new GrammarBuilder(new Choices(File.ReadAllLines(@"C:\users\username\Documents\commands.txt")))));
        _recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(_recognizer_SpeechRecognized);
        _recognizer.RecognizeAsync(RecognizeMode.Multiple);
    }
    void _recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
        int ranNum = rnd.Next(1, 10);
        string speech = e.Result.Text;
        switch (speech)
        {
            //INTERACTIONS
            case "hello":
public主窗口()
{
初始化组件();
加载+=主窗口\u加载;
}
已加载私有void主窗口(对象发送方、事件参数)
{
_recognizer.setInputOdeFaultAudioDevice();
_recognizer.LoadGrammar(新语法(新语法生成器(新选项)(File.ReadAllLines(@“C:\users\username\Documents\commands.txt“))));
_recognizer.SpeechRecognized+=新事件处理程序(_recognizer_SpeechRecognized);
_识别器.RecognizeAsync(RecognizeMode.Multiple);
}
void _recognizer _SpeechRecognized(对象发送方,SpeechRecognizedEventArgs e)
{
int ranNum=rnd.Next(1,10);
字符串语音=e.Result.Text;
开关(语音)
{
//相互作用
案例“你好”:

…依此类推

您需要完成四个步骤才能使窗口“消失”:

  • 设置为“无”
  • 设置为“透明”
  • 设置为“0”
  • 设置为“真”
  • 我认为没有理由将语音识别与窗口外观联系在一起,但您需要发布一些代码、初始化代码和一些示例用法,这些可能对诊断其余问题非常有用

    如果您需要用户单击用户界面的各个部分,则可能需要将背景设置为“几乎透明”的颜色,而不是纯透明的笔刷。原因是:当背景为纯“透明”时,它不再检测单击事件-它将背景视为不再存在

    您可以尝试以下方法:

    Background="#01000000"
    

    您可能还希望保留对
    任务的引用,该任务(我假设)是由
    RecognizeAsync
    方法调用返回的;不知道何时可能会无意中对其进行垃圾收集。

    我不明白您说的是“替换”“通过将“标准窗口”设置为“透明”来显示我刚导入的图像的标准窗口。如何用图像替换窗口?你的意思是将背景设置为图像?程序运行时,我希望UI仅显示动画,而不显示窗口。具体而言,是图像(圆形)将用作主窗口。这就是为什么我将窗口设置为透明,以便只有图像可见。我明白了。像飞溅一样?我认为只有在外观上,如果有意义的话。我不尝试创建加载屏幕。可能会有帮助。您也可以沿“WPF动画飞溅屏幕”的行搜索“显示了大量的指南。我已使窗口消失,但问题是除了动画以外的所有其他代码都停止工作。我已使用这些代码编辑了我的问题。”。