c# WPF XAML - 使用抽象用户控件
c# WPF XAML - Working with abstract UserControls
您好,我实际上正在开发一个 WPF 库,它提供具有不同基本功能的 MainWindow。使用组件的集成器实际上创建了这个 Window,要使用它必须提供一个继承自“UcDatasourceBase”的 CostomUserControl。此控件将放置在主窗口的中间,但我 不知道 知道 CustomUserControl 的有效类型,只是它正在实现 UcDatasouceBase。
这就是 UcDatasourceBase 的代码隐藏方式:
/// <summary>
/// Interaction logic for UcDatasourceBase.xaml
/// </summary>
public abstract partial class UcDatasourceBase : UserControl
{
public IDatasource Datasource { get; private set; }
public UcDatasourceBase(IDatasource datasource)
{
InitializeComponent();
}
}
以及我如何在 XAML 中集成控件(这会导致编译器错误):
<Controls:UcDatasourceBase x:Name="_ucDatasourceBase" HorizontalAlignment="Stretch" VerticalAlignment="Top" Margin="5,13,5,7" Grid.Row="2" />
在 Mainwindow 的构造函数中,我终于想按名称设置控件:
public MainWindow(UcDatasourceBase ucDatasourceBase)
{
_UcDatasourceBase = ucDatasouceBase;
InitializeComponent();
}
那么如何在不出现错误的情况下将抽象控件添加到 xml?
之前查过的链接:
- Inheriting from a Usercontrol
我在 Visual Studio 2012 Premium
中使用 .NET Framework 4.5
编辑:
"UcDatasourceBase" 类型是抽象类型,必须包含显式值。
在xaml中创建一个新的ContentControl
,并设置它:
<ContentControl x:Name="DataControl" />
稍后在您的代码中:
DataControl.Content = ucDatasourceBase;
您好,我实际上正在开发一个 WPF 库,它提供具有不同基本功能的 MainWindow。使用组件的集成器实际上创建了这个 Window,要使用它必须提供一个继承自“UcDatasourceBase”的 CostomUserControl。此控件将放置在主窗口的中间,但我 不知道 知道 CustomUserControl 的有效类型,只是它正在实现 UcDatasouceBase。
这就是 UcDatasourceBase 的代码隐藏方式:
/// <summary>
/// Interaction logic for UcDatasourceBase.xaml
/// </summary>
public abstract partial class UcDatasourceBase : UserControl
{
public IDatasource Datasource { get; private set; }
public UcDatasourceBase(IDatasource datasource)
{
InitializeComponent();
}
}
以及我如何在 XAML 中集成控件(这会导致编译器错误):
<Controls:UcDatasourceBase x:Name="_ucDatasourceBase" HorizontalAlignment="Stretch" VerticalAlignment="Top" Margin="5,13,5,7" Grid.Row="2" />
在 Mainwindow 的构造函数中,我终于想按名称设置控件:
public MainWindow(UcDatasourceBase ucDatasourceBase)
{
_UcDatasourceBase = ucDatasouceBase;
InitializeComponent();
}
那么如何在不出现错误的情况下将抽象控件添加到 xml?
之前查过的链接:
- Inheriting from a Usercontrol
我在 Visual Studio 2012 Premium
中使用 .NET Framework 4.5编辑:
"UcDatasourceBase" 类型是抽象类型,必须包含显式值。
在xaml中创建一个新的ContentControl
,并设置它:
<ContentControl x:Name="DataControl" />
稍后在您的代码中:
DataControl.Content = ucDatasourceBase;