DataTemplateSelector error: Cannot change access modifiers
DataTemplateSelector error: Cannot change access modifiers
我正在尝试自定义 DataTemplateSelector
但它抛出以下错误:覆盖 'public' 继承成员时无法更改访问修饰符
public class NotesTemplateSelector : DataTemplateSelector
{
public DataTemplate GripElectricTemplate { get; set; }
public DataTemplate CameraTemplate { get; set; }
protected override DataTemplate SelectTemplate(object item, DependencyObject container)
{
var ListItem = item as NoteHeaders;
if (ListItem.NoteHeader == "Grip and Electric")
{
return GripElectricTemplate;
}
else if (ListItem.NoteHeader == "Camera")
{
return CameraTemplate;
}
return null;
}
}
xaml 在我看来
<Grid.Resources>
<local:NotesTemplateSelector x:Key="NotesTemplateSelector"/>
<DataTemplate x:Key="GripElectricTemplate">
<StackPanel>
<Expander Header="Grip and Electric">
<TextBox AcceptsReturn="True" HorizontalAlignment="Left" Height="85" Margin="10,5,0,0" TextWrapping="Wrap" Text="{Binding SceneCollectionView/GripElectric, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="278"/>
</Expander>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="CameraTemplate">
<StackPanel>
<Expander Header="Grip and Electric">
<TextBox AcceptsReturn="True" HorizontalAlignment="Left" Height="85" Margin="10,5,0,0" TextWrapping="Wrap" Text="{Binding SceneCollectionView/Camera, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="278"/>
</Expander>
</StackPanel>
</DataTemplate>
</Grid.Resources>
<ListBox Background="#FF646464" ItemsSource="{Binding ElementName=This}" ItemTemplateSelector="{StaticResource ResourceKey=NotesTemplateSelector}" dd:DragDrop.IsDragSource="True" dd:DragDrop.IsDropTarget="True">
</ListBox>
SelectTemplate 似乎有问题,它似乎禁用了我在 mvvm light 中使用的 ViewModelLocator。我该如何解决这个问题?
public virtual DataTemplate SelectTemplate(Object item, DependencyObject container)
将 protected 更改为 public,你应该没问题。
我正在尝试自定义 DataTemplateSelector
但它抛出以下错误:覆盖 'public' 继承成员时无法更改访问修饰符
public class NotesTemplateSelector : DataTemplateSelector
{
public DataTemplate GripElectricTemplate { get; set; }
public DataTemplate CameraTemplate { get; set; }
protected override DataTemplate SelectTemplate(object item, DependencyObject container)
{
var ListItem = item as NoteHeaders;
if (ListItem.NoteHeader == "Grip and Electric")
{
return GripElectricTemplate;
}
else if (ListItem.NoteHeader == "Camera")
{
return CameraTemplate;
}
return null;
}
}
xaml 在我看来
<Grid.Resources>
<local:NotesTemplateSelector x:Key="NotesTemplateSelector"/>
<DataTemplate x:Key="GripElectricTemplate">
<StackPanel>
<Expander Header="Grip and Electric">
<TextBox AcceptsReturn="True" HorizontalAlignment="Left" Height="85" Margin="10,5,0,0" TextWrapping="Wrap" Text="{Binding SceneCollectionView/GripElectric, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="278"/>
</Expander>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="CameraTemplate">
<StackPanel>
<Expander Header="Grip and Electric">
<TextBox AcceptsReturn="True" HorizontalAlignment="Left" Height="85" Margin="10,5,0,0" TextWrapping="Wrap" Text="{Binding SceneCollectionView/Camera, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="278"/>
</Expander>
</StackPanel>
</DataTemplate>
</Grid.Resources>
<ListBox Background="#FF646464" ItemsSource="{Binding ElementName=This}" ItemTemplateSelector="{StaticResource ResourceKey=NotesTemplateSelector}" dd:DragDrop.IsDragSource="True" dd:DragDrop.IsDropTarget="True">
</ListBox>
SelectTemplate 似乎有问题,它似乎禁用了我在 mvvm light 中使用的 ViewModelLocator。我该如何解决这个问题?
public virtual DataTemplate SelectTemplate(Object item, DependencyObject container)
将 protected 更改为 public,你应该没问题。