我试图在XAML中使用用户控件,经过一段时间和几个教程我设法得到它"工作" (阅读'它构建没有错误')。但是当我运行它时,我所能看到的(而不是2个测试标签)是Class的名称。
这是我的代码: 用户控件:
<Grid xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Config.UCTest">
<Label Text="TEST" VerticalOptions="Center" HorizontalOptions="Center">TEST</Label>
<Label Text="TEST" VerticalOptions="Center" HorizontalOptions="Center" Margin="150,10,10,10">TEST</Label>
</Grid>
Codebehind usercontrol:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace Config
{
public partial class UCTest : Grid
{
public UCTest()
{
InitializeComponent();
}
}
}
主窗口:
<Window x:Class="Config.WPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Config.WPF"
xmlns:control="clr-namespace:Config;assembly=Config"
mc:Ignorable="d"
Title="MainWindow" SizeToContent="WidthAndHeight" Height="154" Width="363">
<control:UCTest/>
</Window>
Codebehind Mainwindow:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Config;
using System.IO;
namespace Config.WPF
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
BTW,&#34; Config&#34;不是实际项目中使用的命名空间,它有一个前缀,因此它不是指C#Config命名空间。我删除了前缀以隐藏&#39;源项目。
正如您可能也注意到的那样,MainWindow和用户控件位于不同的项目中,但它会按照应有的方式进行选择。当我在用户控件中写入错误时,主窗口在导入usercontrol的行上给出了错误。主窗口中还显示了全名和命名空间。所以他们确实知道彼此。但我似乎无法在那里展示实际的控件。
答案 0 :(得分:2)
用户控制
<UserControl x:Class="WpfApplication1.UserControl1"
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"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="TEST" VerticalAlignment="Center" Foreground="Black" HorizontalAlignment="Center" Grid.Column="0"></TextBlock>
<TextBlock Text="TEST" VerticalAlignment="Center" Foreground="Black" HorizontalAlignment="Center" Grid.Column="1" ></TextBlock>
</Grid>
</UserControl>
主窗口:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<controls:UserControl1 Width="200" Height="200"></controls:UserControl1>
</Grid>
</Window>
将Usercontrol用于不同的项目。
首先创建wpf用户控件库项目并在其中添加usercontrol。与上面相同的代码。
然后将项目引用添加到主项目中。
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WpfControlLibrary1="clr-namespace:WpfControlLibrary1;assembly=WpfControlLibrary1" x:Class="WpfApplication1.MainWindow"
Title="MainWindow" Height="350" Width="525">
<Grid>
<WpfControlLibrary1:UserControl1 HorizontalAlignment="Left" Margin="154,81,0,0" VerticalAlignment="Top" Height="120" Width="172"/>
</Grid>
</Window>
答案 1 :(得分:0)
UserControl的派生不正确。
public partial class UCTest : UserControl
{
public UCTest()
{
InitializeComponent();
}
}