Joa*_*kim 5 .net c# wpf resources wpf-controls
我正在创建自己的UserControl,我在XAML 的UserControl.Resources部分下有两个不同的DataTemplates .我想在这两个datatemplates之间进行选择,具体取决于listview中显示的对象的属性值.我这样做是通过创建一个自定义DataTemplateSelector类并重写SelectTemplate方法,该方法应该返回我想要使用的DataTemplate.但是,我不知道如何"查找"位于UserControls资源部分的数据模板,我看到的所有示例只从Window.Resources获取数据模板.在这个例子中,他们获取当前的MainWindow然后使用FindResource来查找DataTemplate,我如何以类似的方式获取我的UserControl?:
public override DataTemplate
SelectTemplate(object item, DependencyObject container)
{
if (item != null && item is AuctionItem)
{
AuctionItem auctionItem = item as AuctionItem;
Window window = Application.Current.MainWindow;
switch (auctionItem.SpecialFeatures)
{
case SpecialFeatures.None:
return
window.FindResource("AuctionItem_None")
as DataTemplate;
case SpecialFeatures.Color:
return
window.FindResource("AuctionItem_Color")
as DataTemplate;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
上面的示例来自此处:ItemsControl.ItemTemplateSelector属性
试试这个:
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
if (item != null && item is AuctionItem)
{
AuctionItem auctionItem = item as AuctionItem;
switch (auctionItem.SpecialFeatures)
{
case SpecialFeatures.None:
return
((FrameworkElement)container).FindResource("AuctionItem_None")
as DataTemplate;
case SpecialFeatures.Color:
return
((FrameworkElement)container).FindResource("AuctionItem_Color")
as DataTemplate;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
我通常使用DataConmplateSelector的构造函数中的UserControl作为参数从后面的代码实例化我的DataTemplateSelector,如下所示:
public class MyUserControl : UserControl
{
public MyUserControl()
{
Resources["MyDataTemplateSelector"] = new MyDataTemplateSelector(this);
InitializeComponent();
}
}
public class MyDataTemplateSelector : DataTemplateSelector
{
private MyUserControl parent;
public MyDataTemplateSelector(MyUserControl parent)
{
this.parent = parent;
}
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
parent.DoStuff();
}
}
Run Code Online (Sandbox Code Playgroud)
不是镇上最漂亮的女孩,但它完成了工作;)
希望这可以帮助!
归档时间: |
|
查看次数: |
10381 次 |
最近记录: |