- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道有这个帖子:How to find a resource in a UserControl from a DataTemplateSelector class in WPF?
问同样的问题。
但是...我对答案不满意!一定有办法获取资源
包含 ContentControl/Presenter 的 UserControl 声明如下:
ContentTemplateSelector="{StaticResource MySelector}"
每个派生的DataTemplateSelector
类在其SelectedTemplate
方法中都有一个参数=>
容器,其类型为 DependencyObject。
在我的例子中,容器就是内容控件。
是否不可能从“contentcontrol”开始爬上视觉树并尝试通过 FindAncestor 获取 UserControl ?
最佳答案
是的,您可以将 container
参数强制转换为 FrameworkElement
并调用 FindResource从 ContentPresenter
开始进行资源查找。例如:
代码:
public class MySelector
: DataTemplateSelector
{
public override DataTemplate SelectTemplate
(object item, DependencyObject container)
{
// Determine the resource key to use
var key = item.ToString() == "a" ? "one" : "two";
// Find the resource starting from the container
return ((FrameworkElement)container).FindResource(key) as DataTemplate;
}
}
XAML:
<UserControl
x:Class="WpfApplication1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
>
<UserControl.Resources>
<DataTemplate x:Key="one">
<TextBlock>Template One</TextBlock>
</DataTemplate>
<DataTemplate x:Key="two">
<TextBlock>Template Two</TextBlock>
</DataTemplate>
<local:MySelector x:Key="MySelector"/>
</UserControl.Resources>
<StackPanel>
<ContentPresenter
ContentTemplateSelector="{StaticResource MySelector}"
Content="a"/>
<ContentPresenter
ContentTemplateSelector="{StaticResource MySelector}"
Content="b"/>
</StackPanel>
</UserControl>
关于WPF:从 DataTemplateSelector 类中的 UserControl 查找资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4444483/
在两个之间切换 ItemTemplates在我的 ListView基于当前的 Item 类型,我实现了一个 DataTemplateSelector .我是通过 Binding 添加的到 ListVi
我有一个应用于 DataGridTemplateColumn 的 DataTemplateSelector。它正确地为我提供了一个 DataTemplate,该模板根据我的 DataRow(在其他列中
使用 dataTemplateSelector 根据枚举值为我的 View 模型选择正确的数据模板时遇到一点问题。 这是一个重现问题的演示。 我有一个由我的 viewModels 使用的模型层次结构
我有 ContentPresenter 和 DataTemplateSelector: ... public override DataTemplate SelectTemplate(
我正在使用带有 ModelView-First 方法的 MVVM 模式。到目前为止,这工作正常。 现在我有一个用户控件( View ),它应该根据位于我的 ViewModel 中的属性显示各种内容。
我在列表框中使用 DatatemplateSelector。 我的数据没有按需拉伸(stretch)(灰色圆圈必须在列表框的右侧)
我的应用中需要一个数据模板选择器。我找到了 this blog在 7.0 上效果很好。将我的项目升级到 7.1 后,设置模板时出现“未指定错误”。我试着把他们在博客上发布的示例项目升级到芒果,它仍然有
我正在使用 LongListSelector 来实现我的项目的列表或网格显示。为此,我创建了一个 DataTemplateSelector 并在运行时更改了 LayoutMode 属性。这是可行的,但
这是我拥有的 XAML: 这是我的 ListTemplateSelector 类: public class ListTemplateSelector : DataTemplateSelector
我将 ContentControl.DataTemplateSelector 设置为我想要的。 我希望根据命令或其他方式调用 ContentControl 以通过 xaml 或代码从选择器中重新选择模
我想设计一个 DataTemplateSelector,它将给定值与传入的参数进行比较,并在值优劣时选择正确的模板 我带来了以下内容: class InferiorSuperiorTemplateSe
如何更改 UWP 项目中 ListView 的 SelectedItem 的 DataTemplate?我正在尝试使用 DataTemplateSelector,但问题是 SelectTemplate
走出我的 .net 踩踏地,似乎无法弄清楚是否有与您在 .net 中使用 DataTemplateSelector 的等效项,但用于 ionic 驱动的 html5 和 angularjs 元素。有人
我正在制作一个自定义的水平滚动 ListView 类型控件,我遇到了一个我无法解释的问题,而且我不能 100% 确定这个问题是否与我的代码有关,除非我误会了什么。 我已将问题提炼成最简单的形式,可在
我知道有这个帖子:How to find a resource in a UserControl from a DataTemplateSelector class in WPF? 问同样的问题。 但
我有一个使用 StackPanel 的 ItemsControl 来显示项目列表。 我希望每行都显示一个标签,但标签左侧的内容由 DataTemplateSelector 定义。我不想为 Templa
我正在尝试构建一个 ContentControl -派生控件(我们称之为 MyContentControl ),它将有其 ControlTemplate由 DataTemplateSelector 的
我有两个列表框,默认的和自定义的。一个正确使用 DataTemplateSelector 而另一个只使用默认的 DataTemplates 从不调用选择器; //shows correctly //
我有一个动态数据透视项模板,如下所列:
我有一个简单的问题。我的 Xamarin Forms 页面上定义了两个数据模板。我想在按下按钮时将一个换成另一个。我知道使用 ListView 我可以使用 ItemTemplate 并绑定(bind)
我是一名优秀的程序员,十分优秀!