Unable to override inherited SelectTemplate ... with code I copied from MSDN

I have a redefinition problem. I know that you cannot override inherited elements unless they are marked as virtual, abstract, or overridden, but ...

I have this code from msdn:

using System.Windows; using System.Windows.Controls; namespace SDKSample { public class TaskListDataTemplateSelector : DataTemplateSelector { public override DataTemplate SelectTemplate(object item, DependencyObject container) { FrameworkElement element = container as FrameworkElement; if (element != null && item != null && item is Task) { Task taskitem = item as Task; if (taskitem.Priority == 1) return element.FindResource("importantTaskTemplate") as DataTemplate; else return element.FindResource("myTaskTemplate") as DataTemplate; } return null; } } } 

And I added this code:

 public class PostTemplateSelector : DataTemplateSelector { public override DataTemplate SelectTemplate(object item, DependencyObject container) { ListViewItem lvi = item as ListViewItem; AppNetClient.PostClass key = lvi.DataContext as AppNetClient.PostClass; if (key.postTemplate == "Post") { return lvi.FindName("PostDataTemplate") as DataTemplate; } else { return lvi.FindName("SelectedPostDataTemplate") as DataTemplate; } } } 

And I get this error:

 Error 3 'oneSocialLife.MainPage.PostTemplateSelector.SelectTemplate(object, Windows.UI.Xaml.DependencyObject)': cannot override inherited member 'Windows.UI.Xaml.Controls.DataTemplateSelector.SelectTemplate(object, Windows.UI.Xaml.DependencyObject)' because it is not marked virtual, abstract, or override C:\Users\kcone\documents\visual studio 2012\Projects\HttpClientApp\HttpClientApp\MainPage.xaml.cs 339 42 oneSocialLife 

I searched for many hours why, but I can’t understand. Any ideas?

+4
source share
2 answers

The sample you are referring to refers to WPF ( System.Windows.Controls.DataTemplateSelector ).

In the Windows Store application, you use Windows.UI.Xaml.Controls.DataTemplateSelector , which has different semantics and the SelectTemplate is not really overridden, but SelectTemplateCore .

+6
source

Code that ended: from: http://msdn.microsoft.com/en-us/library/ms742521.aspx also: http://www.switchonthecode.com/tutorials/wpf-tutorial-how-to-use- a-datatemplateselector

 public class PostTemplateSelector : DataTemplateSelector { public DataTemplate PostTemplate { get; set; } public DataTemplate SelectedPostTemplate { get; set; } protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) { //ListViewItem lvi = item as ListViewItem; //AppNetClient.PostClass key = lvi.DataContext as AppNetClient.PostClass; AppNetClient.PostClass key = item as AppNetClient.PostClass; if (key.postTemplate == "Post") { return PostTemplate; } else { return SelectedPostTemplate; } } } 
+4
source

Source: https://habr.com/ru/post/1438790/


All Articles