Tag: wpf

如何在WPF中使DispatcherTimer事件更顺畅?

在我的WPF应用程序中,用户按下按钮以启动平滑旋转的3D模型,并按下按钮以停止旋转。 为此,我创建了一个DispatcherTimer: DispatcherTimer timer = new DispatcherTimer(); timer.Tick += new EventHandler( timer_Tick ); timer.Interval = new TimeSpan( 0, 0, 0, 0, 30 ); 当按下按钮时,我调用timer.Start() ,当按钮松开时,我调用timer.Stop() 。 timer_Tick函数改变模型的旋转: void timer_Tick( object sender, EventArgs e ) { spin = ( spin + 2 ) % 360; AxisAngleRotation3D rotation = new AxisAngleRotation3D( new Vector3D( 0, 1, 0 ), […]

以编程方式将列添加到WPF中的listview?

如何以编程方式将列添加到列表视图?

WPF简单validation问题 – 设置自定义ErrorContent

如果我有以下TextBox: 这在代码隐藏中: private void ContentPresenter_Error(object sender, ValidationErrorEventArgs e) { MessageBox.Show(e.Error.ErrorContent.ToString()); } 如果我在文本框中输入字母“x”,弹出的消息是 值’x’无法转换 有没有办法自定义此消息?

为什么使用带有破折号模式的笔会在WPF自定义2D绘图中导致巨大的(!)性能降级?

希望任何人都可以阐明这一点,以便我可以使用带有破折号模式的笔? 我正在使用IScrollInfo的DataContext.Draw X在WPF中编写一个可滚动的图表(一个实现IScrollInfo ScrollViewer中的IScrollInfo )。 我有几千个DrawingVisual可以通过在托管它们的Panel上使用TranslateTransform来滚动。 我通过在它上面放置一个Panel并使用DataContext.DrawLine(pen, new Point(0, y), new Point(widthOfPanel, y));从一个边缘到另一个边缘绘制简单的水平线来实现网格DataContext.DrawLine(pen, new Point(0, y), new Point(widthOfPanel, y)); //(注意:这些线总是静态的,它们永远不会移动)。 滚动表现绝对疯狂(即立即绘制DrawingVisual并立即滚动)。 但是如果我使用一个使用破折号模式的Pen (例如见下面)来绘制网格线,那么滚动非常不稳定并且性能似乎已降低了100倍(估计值)。 谁能解释为什么会发生这种情况以及如何解决这个问题? 带划线图案的笔示例:

WPF TabControl在SelectionChanged上,将焦点设置为文本字段

我有一个标签控件和一些标签项。 我正在成功收听SelectionChanged事件,并检查我感兴趣的选项卡是否是当前选中的选项卡。 我正在使用这个代码(下面),并通过调试器,我可以看到我的分支逻辑按设计工作; 但是,我遇到的问题是有些东西覆盖了对txt.Focus()调用,因为在显示正确的选项卡项后,焦点不在文本框上。 private void tabMain_SelectionChanged(object sender, SelectionChangedEventArgs e) { // exact same behavior with and without this line e.Handled = true; if (e.AddedItems.Contains(usrTab)) { txtusr.Focus(); } else if (e.AddedItems.Contains(svcTab)) { txtsvc.Focus(); } } 如果我只是将txtusr.Focus()放在按钮事件处理程序中,它就会完全按照我的预期进行聚焦。 我怀疑这与调用.Focus()方法时没有加载的tabitem内容有关,但我不确定如何修复它。

WPF自定义派生控件样式

我有一个从Button派生的自定义控件: class MyControl : Button{} 并且假设这个类是空的(没有成员)。 在应用程序的主窗口资源中,我使用的ResourceDictionary包含大多数WPF控件的样式(所谓的主题): 因此,窗口上的所有控件看起来都像是在该主题文件中定义的。 但是MyControl控件上的样式不受影响。 如何将MyControl看作与Button控件相同? 更新:BureauBlue.xaml中Button的样式没有键,并按以下方式定义: …

“不包含定义……并且没有扩展方法..”错误

我有以下错误消息: ‘System.Collections.Generic.Dictionary’ does not contain a definition for ‘biff’ and no extension method ‘biff’ accepting a first argument of type ‘System.Collections.Generic.Dictionary’ could be found (are you missing a using directive or an assembly reference?) 我检查了SO,我发现这个问题似乎与我有类似(如果不是完全相同)的问题。 但是,我尝试了接受的答案中提供的解决方案,但仍然没有提出任何建议。 它表现得像我错过了一个使用声明,但我几乎是积极的,我有我需要的所有使用。 以下是产生错误的一些代码: using locationOfSpoofClass; … Dictionary cart = new Dictionary(); foreach (var item in dbContext.DBView) { cart.biff = item.biff; […]

Generic DataTemplate用于多个GridViewColumns

我有一个显示一些值的GridView: …other Columns, not necessarily containing dates… 这很好用。 现在我想创建一个以特定方式格式化日期的数据模板: 只要指定了DisplayMemberBinding添加CellTemplate将不起作用。 因此,我必须删除DisplayMemberBinding属性: 这是一个问题 :现在DisplayMemberBinding已经消失了,我如何告诉GridView要显示哪个属性? GridViewColumn没有DataContext属性。 当然,我可以将属性的名称( Date1 Date2 )放入DataTemplate中,但是我需要为每个属性设置一个模板,这样做会Date2模板的全部目的。

WPF – 自动刷新combobox内容

我有一个示例mvvm应用程序。 UI具有文本框,按钮和combobox。 当我在文本框中输入内容并点击按钮时,我输入的文本被添加到observablecollection中。 Combobox与该系列绑定。 如何让combobox自动显示新添加的字符串?

如何在WPF中在1像素厚的canvas上绘制一条线

我正在使用Line类在WPF中的canvas上绘制,即使我设置StrokeThickness = 1 ,该行显示2像素宽 – 这几乎就像最小厚度是2。 如何绘制真正1像素厚的线? Line myLine = new Line(); myLine.Stroke = System.Windows.Media.Brushes.Black; myLine.X1 = 100; myLine.X2 = 140; // 150 too far myLine.Y1 = 200; myLine.Y2 = 200; myLine.StrokeThickness = 1; graphSurface.Children.Add(myLine);