问题标签 [frameworkelementfactory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
4675 浏览

wpf - 将 FrameworkElementFactory 绑定到数据对象属性

我有一个ListBox,其DataTemplate是使用 3 个 FrameworkElementFactory 对象(带有 2 个附加子项(CheckBoxTextBox)的StackPanel )在代码中创建的。集合中绑定到ListBox的ItemsSource的item 对象与您通常在任何类型的ListControl中看到的 Item 对象类型基本相同。我要做的是将DataTemplate中CheckBoxIsChecked属性绑定到 Item 对象上的布尔属性。列表支持 3 种模式,单选、多选和多选。我试图实现的模式是多重检查,以便CheckBox的IsChecked属性绑定到项目对象的Selected属性。这会创建一种行为,其中仅当ListBoxItem上的CheckBoxIsChecked属性为真时才认为该项目被选中,而不是当 WPF ListBoxItem的 IsSelected 属性为真时。应该发生的是数据对象上的布尔属性应该绑定到 IsChecked 属性,并且当 IsChecked 属性更改时,项目对象上的Selected属性将更新,从而更新一个幕后的 SelectedItems集合。

这是我刚刚描述的一些简化代码。

有一些我没有包括的代码是CheckBox上的事件处理程序。如果 Wpf ListBox上有多项选择,则该范围内的所有 CheckBox 都将切换为单击的 CheckBox 的值。我可以手动将 Item 上的 Selected 属性设置为发送者的 IsChecked 属性,一切正常,但是我认为数据绑定应该可以正常工作,我不必手动执行此操作。在这种情况下,数据绑定是异步的还是我需要明确地做一些事情?

0 投票
1 回答
531 浏览

c# - FrameworkElementFactory “忽略”父资源(例如样式)

我正在尝试创建一些自定义树视图。到目前为止一切都很好,但我在样式方面遇到了一点问题。我有一个简单的“RedBackground”样式,我将它添加到 Window 的资源中。添加普通元素时,它工作正常。

使用自定义项目模板呈现树视图项目时,我的资源被忽略。如果我将资源直接添加到模板中,它可以正常工作(如代码中标记的那样)......

我显然不希望直接向 ItemTemplate 添加样式,这在进一步开发中会非常复杂。我想我缺少某种“绑定”或“查找”......我认为它与依赖属性有关......或者这个方向的东西。

也许有人有更多的见解,这里是创建模板的代码(在 util 类中,但这只是为了保持干净):

这是我非常简单的自定义树视图

好的,可以肯定的是,这里是创建样式的代码:

感谢您的任何提示...克里斯

0 投票
1 回答
797 浏览

c# - 从 FrameworkElementFactory 获取绑定

在 GridView 中,某些列的文本应该向右对齐。为此,我创建了一个包含 TextBlock 的 DataTemplate。

在另一个类中,我必须访问我的 GridViewColumns 的绑定。如何访问此列的绑定?

0 投票
2 回答
3573 浏览

c# - Building a DataTemplate in C#

I am trying to build the following DataTemplate in C#

I have gotten this far and I can't figure out the Grid.ColumnDefinitions and I am getting an exception of

FrameworkElementFactory must be in a sealed template for this operation.

Any help would be appreciated.

0 投票
4 回答
25722 浏览

c# - 以编程方式在 WPF 中创建一个网格作为模板

我想以编程方式创建具有样式的基本用户控件。在这种风格中,我想添加一个Grid(没问题),但我不能将列定义添加到这个网格中。

我的示例代码是

但是FrameworkElementFactorywith类型的创建ColumnDefinitionCollection会抛出异常"'ColumnDefinitionCollection' type must derive from FrameworkElement, FrameworkContentElement, or Visual3D."

谁能帮我?

0 投票
1 回答
4294 浏览

wpf - 在代码中设置 ControlTemplate [WPF]

如何在 ControlTemplate 中使用一些 UI 元素设置 Grid 对象?我尝试使用此代码,但我不明白如何将 Grid 对象设置为 FrameworkElementFactory 对象。谢谢

我需要它来在后面的代码中替换我的 xaml 设计样式:

我必须这样做,因为我想在运行时从代码中更改文本框的绑定路径。你知道其他方法吗?谢谢。

0 投票
2 回答
7089 浏览

c# - 将 ControlTemplate XAML 转换为 C#

我一直在尝试将以下代码转换为纯 C#。此 XAML 代码来自 Cavanaghs 博客,内容是关于如何在任何东西上制作圆角。该代码有效,但我需要将其转换为 c#,因为在某些情况下我需要它是动态的。如果你能帮忙那就太好了。

到目前为止,我有以下内容,但我遇到了错误。

据我所知,我无法将 VisualBrush 设为 FrameworkElementFactory(崩溃),但如果我将其声明为常规元素 VisualBrush,我无法将边框作为 Visual 传递,因为它是 FrameworkElementFactory。

只是我迷路了,任何帮助将不胜感激。谢谢你的帮助

0 投票
1 回答
1600 浏览

wpf - WPF 绑定 (dataGrid) OneWayToSource、UpdateSourceTrigger-Explicit - 不需要的源更新

我在 OneWayToSource、UpdateSourceTrigger.Explicit 场景中遇到了不需要的源更新问题

背景:我有一个包含用户数据和密码列的 DataGrid。我已经从 DataGridTemplateColumn 派生了类 DataGridPasswordColumn 到

在非编辑模式下显示一些虚拟屏蔽数据(例如####)这是通过将 CellTemplate 设置为具有常量值的 TextBlock 来完成的:

并在编辑模式下显示两个 PasswordBox 控件和一个 OK 按钮,使用以下代码:

PasswordEntry 是一个用户控件

  • 有一个名为“SelectedPasswordProperty”的 DependencyProperty
  • 并等待用户单击 OKButton,然后进行一些验证(两个 PasswordBox 的内容是否相同?)。如果验证没问题,通过以下代码调用 UpdateSource

    BindingExpression = this.GetBindingExpression(SelectedPasswordProperty); if (be != null) { be.UpdateSource(); }

更新源码就好了。

问题是,当打开单元格编辑模板(PasswordEntry UserControl)时,会出现一个带有“NULL”值的不需要的源更新。

我预计当使用 UpdateSourceTrigger = UpdateSourceTrigger.Explicit 时,除非调用 UpdateSource(),否则不会更新源。

到目前为止,我还没有找到抑制此源更新的方法。我试过了

但它不起作用,即源仍被更新(使用 NULL 值)。

这是 WPF 错误吗?有没有人有同样的问题?

0 投票
2 回答
3808 浏览

c# - FrameworkElementFactory 中图像的 Uri 绑定

我在代码中创建一个 DataTemplate 并且不能使用 XAML。:(

我已经设法在模板中创建了一个图像,但前提是我硬编码了 ico 文件的路径。我希望能够将该字符串绑定到项目(我在修改后的 ListView 上使用 DataTemplate)。

这是我现在的代码:

谢谢!

0 投票
1 回答
5403 浏览

wpf - FrameworkElementFactory 必须位于此操作的密封模板中

我编写了一个片段来通过 c# 代码创建自己的 DataTemplate。我将它添加到 datagrid 列的编辑模板中。当我打电话object templateContent = tc.CellTemplate.LoadContent ( );时,应用程序崩溃了,并向我抛出了一个异常,即“FrameworkElementFactory 必须位于此操作的密封模板中。”。这是我创建数据模板的代码。