我有一個ListView的ItemsSource我在代碼後面編程設置。我曾經只有一個模板,但現在我想使用多個模板,並根據我添加到ListView的項目選擇模板。ItemTemplateSelector不工作的ListView沒有綁定
這是XAML代碼我有:
<Page.Resources>
<local:TemplateSelector x:Key="myTemplateSelector" TemplateA="{StaticResource TemplateA}" TemplateB="{StaticResource TemplateB}" />
<!-- TemplateA and TemplateB -->
</Page.Resources>
<ListView
x:Name="MasterListView"
Grid.Row="1"
ItemContainerTransitions="{x:Null}"
ItemTemplateSelector="{StaticResource myTemplateSelector}"
IsItemClickEnabled="True"
ItemClick="MasterListView_ItemClick"/>
我然後設置ListView控件的的ItemSource,這是我TemplateSelector:
public class TemplateSelector : DataTemplateSelector
{
public DataTemplate TemplateA { get; set; }
public DataTemplate TemplateB { get; set; }
public new DataTemplate SelectTemplate(object item, DependencyObject container)
{
return TemplateA;
}
}
但是,這是行不通的。而不是我想要的模板,我總是爲每個項目獲得相同的文本:AppName.ViewModels.ViewModel1(我想要顯示的數據的類型)。
在過去,當我只有我在XAML中使用這一項的ItemTemplate,它的工作:
<ListView
x:Name="MasterListView"
Grid.Row="1"
ItemContainerTransitions="{x:Null}"
ItemTemplate="{StaticResource TemplateA}"
IsItemClickEnabled="True"
ItemClick="MasterListView_ItemClick"/>
我怎樣才能獲得ItemTemplateSelector工作?我在那裏放置了斷點,但它甚至沒有被調用。
當我嘗試這一點,我得到以下錯誤:TemplateSelector.SelectTemplate(對象的DependencyObject)「:無法更改訪問修飾符當重寫」保護'繼承成員'DataTemplateSelector.SelectTemplate(object,DependencyObject)' – slimshady
奇怪,我猜是另一個框架版本?但是,您應該重寫而不是新的。我更新了我的帖子,對於我來說,訪問修飾符是公開的。 – user1515791