Tag: wpf

根据屏幕分辨率调整WPF窗口和内容的大小

我有一个WPF应用程序,每个窗口有多个控件,一些覆盖等,我需要的是一种让应用程序根据屏幕分辨率自动resize的方法。 有任何想法吗 ?

使用DocumentPaginator进行打印时如何打印预览?

我正在使用我从DocumentPaginator派生的类(见下文)来打印来自WPF应用程序的简单(仅文本)报告。 我已经准备好了所有内容都能正确打印, 但是如何让它在打印之前进行打印预览呢? 我有一种感觉,我需要使用DocumentViewer,但我无法弄清楚如何。 这是我的Paginator类: public class RowPaginator : DocumentPaginator { private int rows; private Size pageSize; private int rowsPerPage; public RowPaginator(int rows) { this.rows = rows; } public override DocumentPage GetPage(int pageNumber) { int currentRow = rowsPerPage * pageNumber; int rowsToPrint = Math.Min(rowsPerPage, rows – (rowsPerPage * pageNumber – 1)); var page = new […]

将命令绑定到事件?

将命令绑定到事件的好方法是什么? 在我的WPF应用程序中,有些事件我想通过我的ViewModel捕获和处理,但我不确定如何。 失去焦点,鼠标hover,鼠标移动等等。因为我试图坚持MVVM模式,我想知道是否有纯XAML解决方案。 谢谢!

如何在繁忙循环期间显示进度?

我有一个循环,从外部源读取大量数据。 该过程大约需要20秒,我想向用户显示进度。 我不需要任何花哨的进度条,所以我选择在标签中绘制我的进度,该标签将显示“Step 1/1000”,然后更改为“Step 2/1000”等。 我的代码看起来像这样: // “count” is the number of steps in the loop, // I receive it in previous code String countLabel = “/”+count.ToString(); for (i = 0; i < count; i++) { … do analysis … labelProgress.Content = "Step "+i.ToString()+countLabel } 但是,在该分析期间,屏幕“卡住”并且进度未显示为前进。 我从过去的C ++中理解这种行为,我可能会有一个单独的线程,显示进度条接收来自循环的通知,或某种forms的重绘/刷新,或强制窗口/应用程序处理其消息队列。 在C#中使用它的正确方法是什么? 我没有绑定标签,所以如果有一个简单的进度条弹出屏幕我可以使用而不是这个标签它也会很棒…… 谢谢

如何在代码中设置控制模板?

我在XAML中有这个 我想在C#代码中实现相同的function。 我怎样才能做到这一点? ControlTemplate ct = new ControlTemplate();.. Image img = new Image();.. 现在如何将此图像分配给控制模板? 我们能做到这一点还是我错过了这里的任何概念?

检查应用程序是否在一段时间内处于空闲状态并将其锁定

在我的项目中,我需要一个应用程序锁(与windows lock相同)。 如果应用程序空闲一段时间,应该锁定应用程序,即将显示应用程序的登录窗口。 如何在WPF C#应用程序中执行此操作?

使用Font时WPF TextBlock内存泄漏

我在Windows 7上使用.NET 4.5,可能会发现内存泄漏。 我有一个TextBlock (不是TextBox – 它不是Undo问题),它每秒都会改变它的值(CPU使用率,时间等……)。 使用.NET Memory Profiler (通过简单地观察任务管理器)我注意到内存不断增长。 为了更准确,我看到越来越多的UnmanagedMemoryStream实时实例(我尝试了GC.Collect()显然没有做任何事情)。 经过一些测试后,我发现只有当我将TextBlock字体设置为资源字体时,才会出现此问题,如下所示: 我尝试直接从代码或通过Binding更新Text属性,它对两种方式都表现相同。 底线: 设置FontFamily ,每次我更新文本时, UnmanagedMemoryStream实例都会继续(永远)。 当我没有(设置FontFamily属性)时,内存是稳定的。 (顺便说一下,当我使用Label而不是TextBlock时会发生这种情况) 它看起来像是内存泄漏,但我找不到任何关于它的参考。 有关如何解决的任何建议?

WPF DataGrid:DataGridComboxBox ItemsSource绑定到集合集合

情况: 我在XAML中创建了一个DataGrid,并将ItemsSource绑定到包含属性的某个类的ObservableCollection。 然后在C#中,我创建了一个DataGridTextColumn和一个DataGridComboBoxColumn,并将这些绑定到ObservableCollection内对象的属性。 我可以将DataGridComboBoxColumn绑定到一个简单的Collection,但我想要做的是将它绑定到一组字符串集合,这样对于每一行,DataGrid中的ComboBox都有一个不同的字符串集合。 我没有这样做…… 题: 如何绑定DataGridCombBoxColumn以便为此类列的每一行提供不同的字符串集合? 代码示例: XAML: WPFToolkit:DataGrid x:Name=”DG_Operations” Margin=”10,5,10,5″ Height=”100″ HorizontalAlignment=”Stretch” FontWeight=”Normal” ItemsSource=”{Binding Path=OperationsStats}” AlternatingRowBackground=”{DynamicResource SpecialColor}” HorizontalScrollBarVisibility=”Auto” VerticalScrollBarVisibility=”Visible” SelectionMode=”Extended” CanUserAddRows=”False” CanUserDeleteRows=”False” CanUserResizeRows=”True” CanUserSortColumns=”True” AutoGenerateColumns=”False” IsReadOnly=”False” IsEnabled=”True” BorderThickness=”1,1,1,1″ VerticalAlignment=”Stretch”/> C#: public class DataModelStatsOperations { public ObservableCollection OperationsStats { get; set; } } public interface IStatsOperation { string Operation { get; set; } Collection […]

跟踪侦听器写入文本框(WPF应用程序)

对于我的WPF应用程序,我使用TextWriterTraceListener记录到文本文件。 如何将跟踪输出显示到文本框?

动态添加多个按钮到wpf窗口?

如何在c#中向窗口添加多个按钮? 这就是我需要做的…我从字典中获取多个用户值(在合理范围内,只有@ 5-6值)。 对于每个值,我需要创建一个按钮。 现在,我如何命名按钮,而不是按钮内的文字? 我如何为每个按钮定义“点击”方法(它们都会有所不同)? 如果我不再需要它,如何擦除按钮?