Tag: wpf

WPF Datagrid绑定到xml

我想以编程方式将包含从数据库中提取的一些结果的XML文件绑定到我的Datagrid。 我的XML看起来像: Col 1 Col 2 Value field 1 Value field 2 Value field 1 Value field 2 我正在尝试将标题映射到datagrid标题,并将行映射到行…唯一的问题是我有点卡住了,我迷失在程序化属性中,有人可以给我一个提示要照顾什么? 我试过了: myDataGrid.ItemsSource = myXmlDoc 但它并没有真正帮助没有显示嘿嘿,我已经阅读了一些“路径”绑定属性,但我找不到它。

加载所有项目并在ListView中显示后会触发哪个事件?

在WPF ListView中加载并显示所有项目后会触发哪个事件? 我尝试优化在ListView中显示大量项目。 ListView使用以下代码填充Items: List selectedArtistsList; //Code to fill selectedArtistsList with about 6,000 items not shown here CollectionViewSource selection1ViewSource = ((CollectionViewSource)(this.FindResource(“selection1Source”))); Stopwatch stopWatch1 = new Stopwatch(); stopWatch1.Start(); selection1ViewSource.Source = selectedArtistsList; stopWatch1.Stop(); Debug.Print(“Time used: {0}ms”, stopWatch1.ElapsedMilliseconds.ToString()); 当我运行此代码时,我看到“时间使用119毫秒”或类似的东西。 但是在我看到屏幕上ListView中的Items之前,它需要大约3秒钟。 是否有一个事件在ListView加载项目后触发? 我有兴趣测量ListView为用户准备好的时间。

WPF的DataContext问题

我问过它如何使用INotifyPropertyChanged接口( WPF INotifyPropertyChanged如何工作? ),它要求我将XAML的DataContext连接到INotifyPropertyChangedinheritance实例,如下所示。 MainViewModel model = new MainViewModel(); this.DataContext = model; 我还建议对每个XMAL使用的DataContext发表评论( http://joshsmithonwpf.wordpress.com/2009/10/24/xaml-tip-datacontext-comment/ )。 当我有多个XAML文件,并且当我想将DataContext链接到不同的ViewModel时,我想我需要让每个XAML.CS文件包含这个代码(模型因每个xaml.cs而异): this.DataContext = model; 。 它是否正确? 如何在XAML文件中执行相同的操作? 这个DataContext背后的魔力是什么? 我的意思是,DataContext是如何工作的?

在WPF和MVVM中使用DataGrid绑定数据表

我是WPF的新手,我在WPF中使用MVVM模式并在运行时生成Datatable结构,然后将Datatable与DataGrid / RadGridView绑定,这正在按预期工作。 问题:我希望DataGrid / RadGridView可配置(用户可以在其中添加新行,删除行和编辑数据),在保存按钮单击时,所有内容都应保存在数据库中。 我有一种情况,我需要创建一个具有不同列的空DataTable(取决于用户输入)。 然后在这些列下输入值,然后单击“保存需要”以保存数据库中的值。 我能够将DataTable绑定到DataGrid(如果网格中的DataTable中已经存在一些数据,我可以看到所有列名和数据行)但是无法在运行时从DataGrid添加(输入)或删除任何行。 我为CanUserDeleteRows和CanUserInsertRows设置了“True”值。 我不知道我哪里出错了。 我在我的ViewModel类中实现了INotifyPropertyChanged。 我正在努力获得理想的结果。 我的代码如下所示: ViewModel– DataTable _manualDataTable; public DataTable ManualDataTable { get { return _manualDataTable; } set { _manualDataTable = value; OnPropertyChanged(“ManualDataTable”); } } 用于创建DataTable– void LoadManualDataTable() { DataTable dtData = new DataTable(); dtData.Columns.Add(“TimeStamp”, typeof(DateTime)); List columns = new List(); var query = _dataContext.GetSenData().Where(sen => […]

WPF窗口关闭事件用法

我有一个Window类(例如public partial class Foo : Window ),当我创建窗口时,我注册了Closed事件。 foo = new Foo(); foo.Closed += FooClosed; public void FooClosed(object sender, System.EventArgs e) { } 当有人按下foo窗口内的按钮时,我会调用this.Close()但似乎没有调用我的FooClosed 。 我错误地报名参加活动了吗? 更新 顺便说一下,我想要完成的就是知道 foo何时关闭,所以我可以将引用设置为null 。 有没有更好的方法来实现这一目标?

Wpf InkCanvas将stokes保存为svg

是否可以将InkCanvas笔划集保存到svg图像? 我唯一能找到的是我可以将笔画保存为带有嵌入式ISF(墨迹序列化格式)的GIF,或者可以将它们渲染为位图。 我想以矢量格式保存笔画,可以与其他平台(如web)互操作。

C#WPF – 等待加载页面

我在StackOverflow上看到了关于这个主题的几个线程,但是它们似乎都没有提供答案。 我有一个按钮,当点击它时,会打开一个不可见的网页,导航到一个URL,将信息输入一个框,按一个按钮,然后抓取屏幕以获取信息。 我的代码的骨头基本上在点击中: WebBrowser wb = new WebBrowser; wb.Visibility = System.Windows.Visibility.Hidden; wb.Navigate(“http://somepage.com”); 这就是它变得棘手的地方。 我正在寻找一种方法来确保在尝试输入数据或刮擦屏幕之前加载页面。 我已经看过几个讨论Navigated , IsLoaded , LoadCompleted以及BackgroundWork东西的线程,但是我无法使用其中的任何一个。 哪个是用于确定页面已完全加载的最佳选项? 您如何获得所选择的方法? 我也无法从屏幕上获取数据,因为WPF不使用相同的GetElementByID 。 编辑: 根据下面的评论,以下是我遇到的错误: 一旦页面被导航,首先导航,并且不一定等到所有对象都被加载。 这可以按预期工作,但不能用于我的目的。 IsLoaded永远不会返回true private void GetData_Click(object sender, RoutedEventArgs e) { int x=0; HTMLDocument doc; wb = new WebBrowser(); wb.Visibility = System.Windows.Visibility.Visible; wb.Navigate(“somesite.com”); doc = wb.Document as mshtml.HTMLDocument; while(!wb.IsLoaded) { //Wait […]

如何将DataGrid绑定到DataTable所有代码?

如何在C#代码后面将DataGrid绑定到DataTable? (所有控件都是在运行时生成的,所以请不要XAML) 我尝试了Binding(),设置DataContext,设置ItemsSource,但都不起作用: /* Binding() fails */ Binding bind = new Binding(); bind.Source = dataset; bind.Path = new PropertyPath(“dataset.Tables”); datagrid.SetBinding(DataSet, bind); /* DataContext fails */ datagrid.DataContext = dataset.Tables; /* ItemsSource fails */ datagrid.ItemsSource = dataset.Tables; 我需要做的就是将DataGrid绑定到DataTable,因此当DataTable中添加了新行时,它将自动显示在DataGrid上。 我通过stackoverflow和谷歌搜索,但奇怪的是我找不到解决方案。

C#/ WPF – 我无法从后台工作者更新UI

我有一个代码,使用Tweetsharp库从特定的Twitter帐户获取推文,创建自定义UserControl实例,并将推文文本发布到该UserControl然后将其添加到StackPanel 。 但是,我必须得到很多推文,似乎应用程序会在向StackPanel添加用户控件时冻结。 我尝试过使用BackgroundWorker ,但直到现在我还不幸运。 我的代码: private readonly BackgroundWorker worker = new BackgroundWorker(); // This ( UserControl ) is used in the MainWindow.xaml private void UserControl_Loaded_1(object sender, RoutedEventArgs e) { worker.DoWork += worker_DoWork; worker.RunWorkerCompleted += worker_RunWorkerCompleted; worker.RunWorkerAsync(); } private void worker_DoWork(object sender, DoWorkEventArgs e) { int usrID; var service = new TwitterService(ConsumerKey, ConsumerSecret); service.AuthenticateWith(AccessToken, AccessTokenSecret); […]

如何将动态文本添加为​​任务栏图标叠加?

我正在尝试将带有文本的任务栏图标叠加添加到windows7应用程序图标,我确实设法添加小叠加但无法添加文本。 有没有人知道如何添加动态文本作为任务栏图标叠加? 使用:WPF和C#