Questions tagged «wpf»

Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。

14
WPF:如何设置对话框位置以显示在应用程序的中心?
如何设置Dialog的位置,该位置 .ShowDialog();显示在mainWindows的中心。 这是我尝试设置位置的方法。 private void Window_Loaded(object sender, RoutedEventArgs e) { PresentationSource source = PresentationSource.FromVisual(this); if (source != null) { Left = ?? Top = ?? } }
83 wpf  dialog 

4
使WPF TextBox绑定触发每个新角色?
在TextBox中键入新字符后,如何进行数据绑定更新? 我正在学习WPF中的绑定,现在我陷入了一个(希望)简单的事情。 我有一个简单的FileLister类,可以在其中设置Path属性,然后在访问FileNames属性时将为您提供文件列表。这是该类: class FileLister:INotifyPropertyChanged { private string _path = ""; public string Path { get { return _path; } set { if (_path.Equals(value)) return; _path = value; OnPropertyChanged("Path"); OnPropertyChanged("FileNames"); } } public List<String> FileNames { get { return getListing(Path); } } private List<string> getListing(string path) { DirectoryInfo dir = …
83 c#  wpf  xaml  data-binding  textbox 

4
如何通过辅助线程更新ObservableCollection?
我有一个ObservableCollection<A> a_collection;集合包含“ n”个项目。每个项目A如下所示: public class A : INotifyPropertyChanged { public ObservableCollection<B> b_subcollection; Thread m_worker; } 基本上,所有这些都连接到WPF列表视图+一个详细信息视图控件,该控件b_subcollection在单独的列表视图中显示所选项目的内容(2向绑定,属性更改的更新等)。 当我开始实施线程时,问题就出现了。整个想法是让a_collection工作线程充分利用它来“完成工作”,然后更新各自的工作,b_subcollections并让gui实时显示结果。 当我尝试它时,我得到一个例外,说只有Dispatcher线程可以修改ObservableCollection,并且工作停止了。 谁能解释这个问题,以及如何解决?

3
如何在WPF用户控件中结合导入和本地资源
我正在编写几个需要共享和单独资源的WPF用户控件。 我已经弄清楚了从单独的资源文件加载资源的语法: <UserControl.Resources> <ResourceDictionary Source="ViewResources.xaml" /> </UserControl.Resources> 但是,当我这样做时,也无法在本地添加资源,例如: <UserControl.Resources> <ResourceDictionary Source="ViewResources.xaml" /> <!-- Doesn't work: --> <ControlTemplate x:Key="validationTemplate"> ... </ControlTemplate> <style x:key="textBoxWithError" TargetType="{x:Type TextBox}"> ... </style> ... </UserControl.Resources> 我看了ResourceDictionary.MergedDictionaries,但这只允许我合并多个外部词典,而不能在本地定义更多资源。 我一定缺少一些琐碎的东西吗? 应该提到的是:我将用户控件托管在WinForms项目中,因此将共享资源放入App.xaml并不是一个真正的选择。
82 wpf  xaml  resources 

12
为什么在循环期间追加到TextBox.Text每次迭代都占用更多内存?
简短问题 我有一个运行18万次的循环。在每次迭代结束时,都应将结果附加到TextBox,并实时更新。 使用MyTextBox.Text += someValue将导致应用程序占用大量内存,并且在记录了数千条之后耗尽了可用内存。 有没有一种更有效的方式将文本附加到TextBox.Text18万次? 编辑我真的不在乎这种特殊情况的结果,但是我想知道为什么这似乎是一个内存消耗,以及是否存在一种将文本追加到TextBox的更有效的方法。 长(原始)问题 我有一个小应用程序,可以读取CSV文件中的ID号列表,并为每个文件生成PDF报告。生成每个pdf文件后,将在其后ResultsTextBox.Text附加已处理且已成功处理的报告的ID号。该进程在后台线程上运行,因此,在处理项目时,ResultsTextBox会实时更新 我目前正在针对180,000个ID号运行该应用程序,但是随着时间的流逝,该应用程序占用的内存呈指数增长。它的开始时间约为90K,但是大约3000条记录占用了大约250MB的内存,而4000条记录则占用了大约500 MB的内存。 如果我注释掉对“结果”文本框的更新,则内存保持相对稳定,大约为90K,因此我可以假定写入ResultsText.Text += someValue是导致它消耗内存的原因。 我的问题是,为什么呢?将数据追加到不占用内存的TextBox.Text的更好方法是什么? 我的代码如下所示: try { report.SetParameterValue("Id", id); report.ExportToDisk(ExportFormatType.PortableDocFormat, string.Format(@"{0}\{1}.pdf", new object[] { outputLocation, id})); // ResultsText.Text += string.Format("Exported {0}\r\n", id); } catch (Exception ex) { ErrorsText.Text += string.Format("Failed to export {0}: {1}\r\n", new object[] { id, ex.Message …
82 c#  wpf 

4
WPF-将静态项目添加到组合框
我已经说过了,我会再说一遍,最简单的WPF示例也是在网络上最难找到的:) 我有一个需要显示的组合框,但它不需要数据绑定或其他任何内容,其内容是静态的。如何使用XAML将静态项目列表添加到组合框中?
82 wpf  combobox 

6
关闭主窗口时,WPF应用程序不会关闭
我习惯于在Visual Studio中进行WinForms编程,但是我想尝试一下WPF。 我在项目中添加了另一个窗口,称为Window01。主窗口称为MainWindow。在public MainWindow()构造函数之前,我声明Window01: Window01 w1; 现在,我在以下实例化此窗口: private void Window_Loaded(object sender, RoutedEventArgs e) { w1 = new Window01(); } 我有一个显示窗口的按钮:w1.ShowDialog();。 这里“有趣”的事实是,如果我启动应用程序(使用调试)并在几秒钟后退出(我在应用程序中不做任何事情),Visual Studio不会像应用程序正在运行那样停止调试。仍在运行。 如果将行w1 = new Window01();移到按钮click方法(即上面的按钮)上ShowDialog(),则Visual Studio的行为正确-也就是说,退出应用程序时调试将停止。 为什么会有这种奇怪的行为?

3
在代码中设置WPF标签的Style属性?
在App.xaml中,我有以下代码: <Application.Resources> <Style x:Key="LabelTemplate" TargetType="{x:Type Label}"> <Setter Property="Height" Value="53" /> <Setter Property="Width" Value="130" /> <Setter Property="HorizontalAlignment" Value="Left" /> <Setter Property="Margin" Value="99,71,0,0" /> <Setter Property="VerticalAlignment" Value= "Top" /> <Setter Property="Foreground" Value="#FFE75959" /> <Setter Property="FontFamily" Value="Calibri" /> <Setter Property="FontSize" Value="40" /> </Style> </Application.Resources> 这旨在为我的标签提供通用模板。 在主要的XAML代码中,我具有以下代码行: <Label Content="Movies" Style="{StaticResource LabelTemplate}" Name="label1" /> 但是,我想通过代码初始化Style属性。我努力了: …
82 c#  wpf  user-interface  label 

2
默认值类型与属性的类型不匹配
我有这堂课 public class Tooth { public string Id {get;set;} } 而这个立方控制 public partial class ToothUI : UserControl { public ToothUI() { InitializeComponent(); } public Tooth Tooth { get { return (Tooth)GetValue(ToothProperty); } set { SetValue(ToothProperty, value); NombrePieza.Text = value.Id.Replace("_",String.Empty); } } public static readonly DependencyProperty ToothProperty = DependencyProperty.Register("Tooth", typeof(Tooth), typeof(ToothUI), …
82 c#  wpf  wpf-controls 

2
具有绑定到值的可编辑组合框不在列表中
我有可编辑的组合框,但并非总是首选项位于下拉列表中。 我想在传播到绑定到SelectedValue的字符串的文本框中手动输入文本的可能性。 现在,仅当输入的值位于ComboBox项中的值上时,才会更新绑定到SelectedValue的字符串。 如何允许手动输入ComboBox列表中不可用的自定义值并将其正确传播为绑定值?
81 .net  wpf  combobox  editing 



4
使用Dispatcher.Invoke从非主线程更改WPF控件
我最近开始在WPF中编程,遇到了以下问题。我不知道如何使用该Dispatcher.Invoke()方法。我在线程方面有丰富的经验,我制作了一些简单的Windows Forms程序,其中我只是使用了 Control.CheckForIllegalCrossThreadCalls = false; 是的,我知道这很la脚,但是这些都是简单的监视应用程序。 事实是,现在我正在制作一个WPF应用程序,该应用程序在后台检索数据,我从一个新线程开始进行调用以(从Web服务器)检索数据,现在我想在WPF表单上显示它。问题是,我无法从该线程设置任何控件。甚至没有标签或其他任何东西。如何解决? 答案评论: @Jalfp: 因此,我在获取数据时在“新踩踏”中使用此Dispatcher方法吗?还是应该让后台工作人员检索数据,将其放入字段中,然后启动一个新线程,等待该字段填充,然后调用调度程序以将检索到的数据显示到控件中?

3
如何使用C#代码构建DataTemplate?
我正在尝试为winform互操作构建下拉列表,并且正在代码中创建下拉列表。但是,在基于指定的DataTemplate绑定数据时遇到问题。 我想念什么? drpCreditCardNumberWpf = new ComboBox(); DataTemplate cardLayout = new DataTemplate {DataType = typeof (CreditCardPayment)}; StackPanel sp = new StackPanel { Orientation = System.Windows.Controls.Orientation.Vertical }; TextBlock cardHolder = new TextBlock {ToolTip = "Card Holder Name"}; cardHolder.SetBinding(TextBlock.TextProperty, "BillToName"); sp.Children.Add(cardHolder); TextBlock cardNumber = new TextBlock {ToolTip = "Credit Card Number"}; cardNumber.SetBinding(TextBlock.TextProperty, "SafeNumber"); …
81 c#  wpf  datatemplate 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.