Tag: wpf

wpf列表框为列提供标题

我有以下标记(xaml): 这一切看起来还不错,但现在在第1列和第3列之上我想放置一个标题。 任何人都可以告诉我如何将标题添加到我的两列。

ScrollViewer使用DataGrid缓慢执行

我有以下情况: 现在,当我将DataGrid绑定到大量数据(大约10,000行)时,我的性能非常慢。 事实上,我得到OutOfmemoryexception(我有8 GB的内存)! 我在某处读到这是因为ScrollViewer会覆盖DataGrid虚拟化(或类似的东西),但我不知道如何防止这种情况。 如果我删除ScrollViewer,问题就解决了! 数据加载时间不到一秒钟。 我想保留ScrollViewer(因为其他控件)并且具有良好的性能。 那可能吗? 如果没有,还有其他解决方案吗?

如何给Dispatcher.BeginInvoke提供回调函数

当函数以Dispatcher.BeginInvoke启动完成时,我需要使用回调函数来执行一些后处理任务。 但是我在Dispatcher.BeginInvoke中找不到任何参数来接受回调。 是否可以为Dispatcher.BeginInvoke提供回调函数?

列表框ItemTemplate选择器不选择模板

我试图在我在不同文件上创建的网格中的列表框上使用ItemTemplateSelector,以便以后由MainWindow调用。 这是我的DataTemplateSelector代码 public class TemplateSelector : DataTemplateSelector { public override DataTemplate SelectTemplate(object item, DependencyObject container) { FrameworkElement element = container as FrameworkElement; if (element != null && item != null && item is myClass) { myClass agg = item as myClass; if(agg.myType == a) { return element.FindResource(“greenItemTemplate”) as DataTemplate; } else if (agg.myType == b) […]

在WPF中运行Flash

我正在尝试在我的WPF应用程序中运行.swf文件,我创建了一个html页面,并且我已经使用object标签引用了我的.swf文件,然后在我的Main Window加载了该html页面 我的xaml看起来像 <!—-> //tried with frame also but no luck 分配来源 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); myBrowser.Source = new Uri(CreateAbsolutePathTo(“playflash.htm”), UriKind.Absolute); } private static string CreateAbsolutePathTo(string mediaFile) { return System.IO.Path.Combine(new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName, mediaFile); } } 问题: 当我运行应用程序时,警告会发生ActiveX内容正在尝试访问等等,当我允许它时,我的主窗口中没有任何内容出现警告多次出现。 如果我直接在浏览器中运行Flash电影,它运行就好了。 问候。

WPF:绑定到后面的代码中的命令

我有一个WPF Microsoft Surface应用程序,我正在使用MVVM-Pattern。 我有一些在代码后面创建的按钮,我想将命令绑定到它们,但我只知道它在XAML中是如何工作的 像这样: 但是我不能这样做,因为我的按钮在XAML中不存在,只在后面的代码中存在。 那么命令绑定如何在代码背后起作用呢?

如何将ItemsControl.ItemsSource与XAML中的属性绑定?

我有一个简单的窗口: 以及相关的代码背后: public partial class WinActivityManager : Window { private ObservableCollection Activities { get; set; } public WinActivityManager() { Activities = new ObservableCollection(); InitializeComponent(); } // Other code … } 如果我在窗口构造函数中编写以下绑定: lvItems.ItemsSource = Activities; 然后当我从Activities添加或删除元素时,我的ListView会自动更新。 我该如何在XAML中编写绑定? 我试过这个,但它不起作用: 如何在XAML中完成这项工作?

IsTabStop =“False”对我的WPF应用程序没有影响

我真的很难用一些应该是微不足道的事情。 我只想从UserControl上的Tab键顺序中删除几个按钮。 我尝试将IsTabStop=”False”和KeyboardNavigation.IsTabStop=”False”属性添加到他们的xaml声明中,以及设置myButton.IsTabStop = false; 在UserControl的Loaded事件处理程序中。 这些添加都没有任何影响,我仍然可以选择我为此做的控件。 在xaml中设置TabIndex工作正常。 如果可能有所不同,UserControl将显示在WPFElementHost中。 另一个想法是我可能需要为所有其他控件指定TabIndex,但我没有在任何地方读过它,如果可能的话我宁愿不明确说明。 有没有人猜测可能会出现什么问题?

Dispatcher.CurrentDispatcher.BeginInvoke不调用

我有一个FileSystemWatcher ,当在UI线程的不同线程上引发监视文件更改时,由此引发的事件。 为了避免和交叉线程的声音乐趣,我试图使用 public void RaisePathChanged(object sender, RenamedEventArgs e) { Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() => { // Some code to handle the file state change here. })); } 这个编译得很好,并且应该触发RaisePathChanged 。 但是,委托Action(() => { /*Here*/ })的代码永远不会被调用/调用,代码只是被跳过。 为什么要跳过代码,我该如何修复它?这是确保代码在WPF中创建它的线程上运行的最佳方法吗? 谢谢你的时间。

WPF DataGrid – 编辑结束后单元格的新值

在我的系统中,我需要捕获并发送单元格编辑的旧值和新值。 我已经读过你可以通过检查事件DataGridCellEditEndingEventArgs的EditingElement来做到这一点: _dataGrid.CellEditEnding += (sender, e) => { var editedTextbox = e.EditingElement as TextBox; if (editedTextbox != null) MessageBox.Show(“Value after edit: ” + editedTextbox.Text); } 在我的例子中,数据是字典,因此EditingElement是ContentPresenter var editedTextbox = e.EditingElement as ContentPresenter; if (editedTextbox != null) MessageBox.Show(“Value after edit: ” + editedTextbox.Content); 内容是原始内容,而不是新编辑的值。 我怎样才能让它工作: _dataGrid.SomeEvent(sender, e)->{ SendValues(e.oldCellValue, e.newCellValue); }