Estoy haciendo una demostración simple para aprender cómo crear un control de usuario vinculable. He creado una clase simple:¿Cómo se puede enlazar un control de usuario XAML personalizado?
class Person
{
public string firstName;
public string lastName;
public Person(string first, string last)
{
firstName = first;
lastName = last;
}
}
Y un muy simple control de usuario:
<UserControl x:Class="Example.ExampleHRControl"
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>
<TextBlock x:Name="textFirstName"></TextBlock>
<TextBlock x:Name="textLastName"></TextBlock>
</Grid>
</UserControl>
Lo que me gustaría saber es ¿qué es lo que tengo que hacer con el fin de poder utilizar el usuario controlar en contexto como un control normal. Puedo añadir esto a la MainWindow
:
<local:ExampleHRControl x:Name="Hr1"></local:ExampleHRControl>
y luego puedo combatirla a través de código detrás y añade el valor:
Hr1.textFirstName.Text = "John";
Hr1.textLasttName.Text = "Doe";
yo preferiría ser capaz de crear una instancia de la clase Person
y simplemente vincula el control en la ventana principal a la clase Person
.
Puede ser útil no cambiar 'DataContext', especialmente si este' UserControl' termina siendo 'ContentControl'. Una solución simple a esto sería nombrar el control del usuario y referenciarlo en los enlaces a través de 'ElementName'. – user7116
sixlettervariables es correcto. Eche un vistazo a esta [explicación] (http://www.scottlogic.co.uk/blog/colin/2012/02/a-simple-pattern-for-creating-re-useable-usercontrols-in-wpf-silverlight /) por la razón. – LPL
He realizado el cambio recomendado por sixlettervariables en mi publicación original anterior. – Curtis