小编Dud*_*eFX的帖子

在呈现之前确定SizeToContent WPF窗口的大小

我的WPF应用程序中有一个窗口,偶尔会显示.当它显示时,它以一个动画淡入,当它关闭时它会淡出.没什么好看的,只是一个修改不透明度的故事板.实际上窗口永远不会真正关闭,不透明度会逐渐淡化为0,直到它再次显示为止.

此窗口是一个信息窗口,并不总是显示相同的内容.它的大小与内容(宽度和高度)相关,并且在这方面效果很好.用户选择屏幕的基本区域以显示它(TopLeft,TopRight,Center,BottomLeft,BottomRight).

在窗口淡入之前,内容会更新.因为窗口的大小适合于内容,所以窗口的大小会增加或减小.宽度和高度可以改变.

在定位窗口时,让我们说,在右下角,我只需取屏幕的WorkingArea(宽度和高度),然后减去窗口的宽度/高度,即可得到我需要的顶部和左侧位置.

逻辑工作,但我遇到的麻烦是窗口的高度和宽度没有返回内容更新后的大小,但返回的是它上次显示的大小.我假设这是因为它尚未使用新内容呈现.

如果Window比上一次显然从屏幕上伸出的那么大,这会让我感到悲伤.

我尝试在OnContentRendered事件中定位窗口,但这只在创建Window时触发一次,而不是在内容更新后,当不透明度设置为0时触发.

有没有人知道如何在它消失之前获得这个窗口的准确宽度和高度?

任何帮助,将不胜感激!!

c# wpf sizetocontent

12
推荐指数
1
解决办法
3890
查看次数

SpeechSynthesizer中的常量内存泄漏

我开发了一个项目,我想发布它使用c#,WPF和System.Speech.Synthesizer对象.阻止此项目发布的问题是,无论何时调用SpeakAsync,都会导致内存泄漏,从而导致最终失败.我相信在使用这个物体后我已经正确清理,但找不到治愈方法.我通过Ants Memory Profiler运行程序,它报告WAVEHDR和WaveHeader随着每次调用而增长.

我已经创建了一个示例项目来试图查明原因,但我仍然处于亏损状态.任何帮助,将不胜感激.

该项目使用VS2008,是针对.NET 3.5和Any CPU的ac#WPF项目.您需要手动添加对System.Speech的引用.

这是代码:

<Window x:Class="SpeechTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
    <StackPanel Orientation="Vertical">

        <Button Content="Start Speaking" Click="Start_Click" Margin="10" />
        <Button Content="Stop Speaking" Click="Stop_Click" Margin="10" />
        <Button Content="Exit" Click="Exit_Click" Margin="10"/>

    </StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)



// Start of code behind
using System;
using System.Windows;
using System.Speech.Synthesis;

namespace SpeechTest
{
    public partial class Window1 : Window
    {

        // speak setting
        private bool speakingOn = false;
        private int curLine = 0;
        private string [] speakLines = {
            "I am wondering",
            "Why …
Run Code Online (Sandbox Code Playgroud)

c# wpf memory-leaks text-to-speech

8
推荐指数
2
解决办法
2790
查看次数

标签 统计

c# ×2

wpf ×2

memory-leaks ×1

sizetocontent ×1

text-to-speech ×1