簡體   English   中英

XAML中的用戶控件僅顯示名稱

[英]User Control in XAML only shows name

經過一段時間的嘗試,我設法在XAML中使用用戶控件,並設法使它“運行”(請閱讀“無錯誤構建”)。 但是,當我運行它時,我所看到的(而不是2個測試標簽)是類的名稱。

這是我的代碼:Usercontrol:

<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>

用戶控件背后的代碼:

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>

主窗口背后的代碼:

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();
        }
    }
}

順便說一句,“ Config”不是實際項目中使用的名稱空間,因為有前綴,所以它不是指C#Config名稱空間。 我刪除了前綴以“隱藏”源項目。

您也可能會注意到,MainWindow和usercontrol在不同的項目中,但是它會按需選擇它。 當我在用戶控件中寫入錯誤時,主窗口在導入用戶控件的行上給出了錯誤。 全名和名稱空間也顯示在主窗口中。 因此他們確實彼此了解。 但是我似乎無法顯示其中的實際控件。

用戶控制

 <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>

您的UserControl派生不正確。

public partial class UCTest : UserControl
{
    public UCTest()
    {
       InitializeComponent();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM