J'essaie d'utiliser un usercontrol défini en dehors de la solution en faisant référence à la dll. Cela fonctionne si j'utilise le code, mais pas XAML.
Voici le code - 1. Code UserControl
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Xamarin.Forms;
using Xamarin.Forms.Internals;
namespace ComplexControl
{
[Preserve]
public class ComplexControl : ContentView
{
public ComplexControl()
{
var button = new Button
{
Text = "Click Me!",
//VerticalOptions = LayoutOptions.CenterAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
};
int clicked = 0;
button.Clicked += (s, e) => button.Text = "Clicked: " + clicked++;
Content = button;
}
[AttributeUsage(AttributeTargets.Class, Inherited = false)]
class PreserveAttribute : Attribute { }
}
}
- Pour l'utilisation dans le projet, je référence l'assemblage ConplexControl en PCL.
Il fonctionne avec du code (c'est-à-dire sans utiliser XAML).
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using ComplexControl;
namespace CustomControlUsageExample
{
public partial class MainPage : ContentPage
{
public MainPage()
{
// without InitializeComponent(); works
//this way works
//Step 1.
StackLayout sl = new StackLayout();
Label lb = new Label();
lb.Text = "Hello";
sl.Children.Add(lb);
sl.Children.Add(new ComplexControl.ComplexControl());
Content = sl;
}
}
}
Si je l'utilise avec XAML, cela ne fonctionne pas.
Comme ceci
XAML est
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:CustomControlUsageExample"
x:Class="CustomControlUsageExample.MainPage"
xmlns:custom="clr-namespace:ComplexControl;assembly:ComplexControl">
<StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Label Text="Welcome to Xamarin Forms!"/>
<custom:ComplexControl.ComplexControl/>
</StackLayout>
</ContentPage>
Et le code derrière cela est
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using ComplexControl;
namespace CustomControlUsageExample
{
public partial class MainPage : ContentPage
{
public MainPage()
{
//This way does not work
//Step 2
InitializeComponent();
}
}
}
J'ai déjà essayé de le déboguer et je ne le vois pas ajouter le contrôle de l'utilisateur au contenu.
Quelqu'un peut-il m'aider à voir ce que je fais mal ? Cela fonctionne si je n'utilise pas XAML pour le contrôle personnalisé.
J'ai un travail sur le contrôle d'utilisateur où le contrôle d'utilisateur est fait en utilisant du code, mais il sera référencé par des projets dans XAML.
Merci,