Tag: datatemplate

generic.xaml中的数据模板如何自动应用?

我有一个自定义控件,它有一个ContentPresenter,它将内容设置为任意对象。 此对象对其类型没有任何约束,因此我希望此控件基于应用程序或Generic.xaml中定义的数据模板定义的任何数据模板显示其内容。 如果在应用程序中我定义了一些数据模板(没有键,因为我希望它自动应用于该类型的对象),并且我使用绑定到该类型对象的自定义控件,则自动应用数据模板。 但我在generic.xaml中为某些类型定义了一些数据模板,我在其中定义了自定义控件样式,并且这些模板未自动应用。 这是generic.xaml: 如果我将“PredefinedType”类型的对象设置为contentpresenter中的内容,则不会应用数据模板。 但是,如果我在app.xaml中为使用自定义控件的应用程序定义数据模板,它是否有效。 有人有线索吗? 我真的不能假设控件的用户将定义这个数据模板,所以我需要一些方法将它与自定义控件联系起来。

Silverlight DataTemplate中的Access元素

即使在SO上已经存在一些相关问题,我也无法找到以下问题的清洁解决方案。 如果我有一个多次使用的数据模板,例如TreeViewItem.HeaderTemplate,我怎样才能更改某些TreeViewItems的模板。 例如,假设我的TVI HeaderTemplate有一个文本块,根据字符串,我想使字体粗体。 我想做这样的事情: ((TextBlock)myTreeView.Items.ElementAt(0).FindName(“myTextBlock”)).FontWeight = FontWeights.Bold; 有人有解决方案吗? – >谢谢埃文 编辑:有没有办法编写一个通用函数来获取基于它的名称的控件,即使它在数据模板中? LayoutRoot.FindName(“myTextBlock”); 如果myTextBlock不在datatemplate中,它将起作用。 如何编写findElementInDataTemplate(string elementName, string parentName)函数? Evan的答案不是我正在寻找的原因是因为我正在开发一个控件。 我希望使用我的控件的应用程序开发人员能够更改控件中的任何元素。 如果我使用Evan的解决方案,则需要应用程序开发人员访问控件中的所有模板。 可能,但不理想。 谢谢!

在ListView ItemTemplate中填充网格

我有一个ListView,它有一个基于网格的数据模板。 xaml如下: 我想要的是,网格填充(拉伸)父ListView的整个水平宽度,但它当前包装到其内容总和的宽度。 我怎样才能实现我想要的行为?

当从DataTemplateSelector显式返回DataTemplate时,为什么DataTemplate不能绑定到接口?

我创建了一个DataTemplateSelector,它使用已知接口的集合进行初始化。 如果传入选择器的项目实现其中一个接口,则返回关联的数据模板。 首先,这是有问题的ICategory接口…… public interface ICategory { ICategory ParentCategory { get; set; } string Name { get; set; } ICategoryCollection Subcategories { get; } } 这是基于基类或接口而不仅仅是特定具体类匹配的DataTemplateSelector … [ContentProperty(“BaseTypeMappings”)] public class SubclassedTypeTemplateSelector : DataTemplateSelector { private delegate object TryFindResourceDelegate(object key); public override DataTemplate SelectTemplate(object item, DependencyObject container) { var frameworkElement = container as FrameworkElement; foreach(var baseTypeMapping […]

Contentpresenter,基于类型的datatemplate选择和绑定

我有一个ItemsControl绑定到项目列表。 这些项目具有名称和值属性。 value属性的类型为Object,以允许使用不同的数据类型。 要正确显示value属性,我可以为我可能使用的每种数据类型使用带有datatemplate的ContentPresenter。 ContentPresenter使用正确的数据类型并且运行良好。 我的问题是编辑这些值对绑定项没有任何影响。 我怀疑这是因为我绑定到ContentPresenter的content属性而不是直接绑定到Value。 我尝试过像这样使用ContentPresenter: 但是这样就没有选择正确的DataTemplate,它只是显示Object而不是String。 我也试图在DataTemplate的绑定中省略这样的路径: 有了这个,我得到一个exception,告诉我使用Path或XPath属性。 所以我的问题是:如何正确绑定到Value,以便使用正确的DataTemplate显示,并且任何值的编辑都将应用于绑定项。 顺便说一句,由于某种原因,我的问题格式化的代码块在第一行后缩进了很多。 我试着修理它,但我不明白发生了什么。

如何为ViewModel中的DataTemplate中创建的View设置DataContext

对此已有疑问,但他们没有回答我的问题。 例如: 正如您所看到的,我正在尝试为创建的View设置DataContext,希望它将使用用于创建它的ViewModel。 但是当我单步执行代码时,DataContext始终为null。 我怎样才能实现我想要的目标? 谢谢

在Windows 8中将视觉状态添加到数据模板

我正在尝试将鼠标hover效果添加到我的Windows 8应用程序中。 具体来说,我正在尝试将其添加到绑定到GridView的DataTemplates。 但是,目前,没有任何事情发生,我试图遵循Microsoft教程,但大多数已经过时或不同版本的XAML。 我的代码如下所示: 我的DataPanel的不透明度不会改变。 我在某处需要其他代码吗? Microsoft教程是针对ControlTemplate的,这是因为我的模板是DataTemplate导致错误吗?

C#/ WPF:获取DataTemplate中元素的绑定路径

如何在DataTemplate中获取元素的绑定路径? 我的XAML看起来像这样: 获取“普通”GridViewColumnHeader.DisplayMemberBinding的绑定路径是 var field = (string)((Binding)((GridViewColumnHeader)e.OriginalSource).Column.DisplayMemberBinding).Path.Path; 如何在TextBlock.Text的绑定路径中获得相同的内容?

如何在代码中定义DataTemplate?

如何在代码中创建DataTemplate (使用C#),然后向该DataTemplate添加控件? 我正在使用Sivlerlight。

如何将与DataView一起使用的DataTemplate与GridView一起使用?

在回答之前:这个问题是关于WPF的ListView控件(使用GridView )。 它不是关于WPF的DataGrid控件,ASP.NET的DataGrid或ListView控件,或WinForm的DataGridView或ListView控件。 它们听起来非常相似并且经常混淆,但错误控制类型的答案对我来说无益,更重要的是浪费了你写答案的时间,我认为不应该浪费。 我有一个带有GridView的ListView控件,它有几个绑定到我的视图模型属性的列。 我可以通过指定CellTemplate (内联或通过资源)轻松自定义GridViewColumn单元格的可视外观。 现在我的视图模型上有一个特定的属性; 它的类型是一个抽象基类,它的值可以是几种派生类型之一。 每个派生类型应在单元格中具有不同的DataTemplate 。 幸运的是, GridViewColumn有一个CellTemplateSelector ,它完全符合我的要求,但需要编写一些管道代码。 但是看一下DataTemplateSelector的页面,它说: 请注意,如果您有不同类型的对象,则可以在DataTemplate上设置DataType属性。 如果这样做,则无需创建DataTemplateSelector。 […]有关更多信息,请参阅数据模板概述 。 欢呼! 无需编写管道代码。 我的类型不同,所以这似乎是一个完美的契合。 但是,即使我定义了一个DataTemplate ,其DataType与其中一个DataTemplate绑定列(使用GridViewColumn的DisplayMemberBinding绑定)的特定派生类型相匹配,它也没有效果。 我只想根据GridView某个列的运行时类型显示不同的DataTemplate 。 DataType -targeted DataTemplates是否与GridView不兼容? 有没有办法使用它们,还是我必须使用指定CellTemplateSelector ? 也许有一种方法可以在GridViewColumn的CellTemplate指定多个DataTemplate ,这样DataType属性就会产生影响?