C# Wpf继承的usercontrol无法使用resources属性
我已经构建了自己的usercontrol模板,继承的类如下所示:C# Wpf继承的usercontrol无法使用resources属性,c#,wpf,xaml,inheritance,user-controls,C#,Wpf,Xaml,Inheritance,User Controls,我已经构建了自己的usercontrol模板,继承的类如下所示: using System.Windows.Controls; using CustomCopyNas.Views; namespace CustomCopyNas.MVVM { /// <summary> /// Base class for all Views that is used in MVVM /// </summary> /// <typeparam na
using System.Windows.Controls;
using CustomCopyNas.Views;
namespace CustomCopyNas.MVVM
{
/// <summary>
/// Base class for all Views that is used in MVVM
/// </summary>
/// <typeparam name="TViewModel">ViewModel</typeparam>
public class ViewBase<TViewModel> : UserControl, IView<TViewModel> where TViewModel : UploadViewModelBase
{
public ViewBase()
{ }
public ViewBase(TViewModel tViewModel)
{
ViewModel = tViewModel;
}
/// <summary>
/// ViewModel
/// </summary>
public TViewModel ViewModel
{
get
{
return (TViewModel)DataContext;
}
private set
{
DataContext = value;
}
}
}
}
使用System.Windows.Controls;
使用CustomCopyNas.Views;
命名空间CustomCopyNas.MVVM
{
///
///MVVM中使用的所有视图的基类
///
///视图模型
公共类ViewBase:UserControl,IView其中TViewModel:UploadViewModelBase
{
公共视图库()
{ }
公共视图库(TViewModel TViewModel)
{
ViewModel=tViewModel;
}
///
///视图模型
///
公共TViewModel视图模型
{
得到
{
返回(TViewModel)数据上下文;
}
专用设备
{
数据上下文=值;
}
}
}
}
我的xaml文件
<mvvm:ViewBase x:Class="CustomCopyNas.Controls.FolderControl"
x:TypeArguments="vm:FolderViewModel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mvvm="clr-namespace:CustomCopyNas.MVVM"
xmlns:vm="clr-namespace:CustomCopyNas.Views"
xmlns:enum="clr-namespace:CustomCopyNas.Enum"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300" Width="700">
<mvvm:ViewBase.Resources>
<ObjectDataProvider x:Key="osEnum" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type Type="enum:OsType"></x:Type>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</mvvm:ViewBase.Resources>
<Grid>
<DataGrid ItemsSource="{Binding Folders, Mode=TwoWay}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Folder or File" Binding="{Binding Path}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</mvvm:ViewBase>
和部分类
using CustomCopyNas.MVVM;
using CustomCopyNas.Views;
namespace CustomCopyNas.Controls
{
/// <summary>
/// Interaction logic for FolderControl.xaml
/// </summary>
public partial class FolderControl : ViewBase<FolderViewModel>
{
public FolderControl()
: base(new FolderViewModel("SourceFolders.xml"))
{
InitializeComponent();
}
}
}
使用CustomCopyNas.MVVM;
使用CustomCopyNas.Views;
命名空间CustomCopyNas.Controls
{
///
///FolderControl.xaml的交互逻辑
///
公共部分类FolderControl:ViewBase
{
公共文件夹控制()
:base(新的FolderViewModel(“SourceFolders.xml”))
{
初始化组件();
}
}
}
当我试图编译时,出现了一个错误,即viewbase上不存在属性资源。我不知道错误在哪里,我的viewbase类继承自usercontrol类,这提供了resources属性。这里出了什么问题?我认为您的问题是由XAML不支持泛型类引起的。您可以在MSDN的页面上阅读完整的故事,但简而言之,可以从链接页面上阅读: 在XAML中,泛型类型必须始终表示为受约束的泛型;XAML类型系统或XAML节点流中从不存在无约束泛型,因此不能在XAML标记中表示 因此,代码类声明之间存在不匹配:
public class ViewBase<TViewModel>
<mvvm:ViewBase x:Class="CustomCopyNas.Controls.FolderControl"
公共类视图库
以及您的XAML类声明:
public class ViewBase<TViewModel>
<mvvm:ViewBase x:Class="CustomCopyNas.Controls.FolderControl"
你的部分课程在哪里?