Creé mi propio UserControl “ClockControl”, que inicializo a través del XAML de la ventana principal.
El único problema es que tengo que pasar un parámetro al constructor del control del reloj, y no tengo idea de cómo puedo hacerlo.
Esto funciona si no tengo parámetros:
Pero, ¿cómo puedo pasar un parámetro haciendo esto?
Aquí está el constructor:
public ClockControl(String city) { InitializeComponent(); this.initController(); ...... ..... }
Gracias por adelantado.
Tu constructor:
public ClockControl(String city) { InitializeComponent(); this.initController(); //... }
En primer lugar, si desea usar ClockControl
desde XAML, necesita un constructor predeterminado, es decir, un constructor que no toma ningún parámetro. Entonces el constructor anterior no va a funcionar.
Le sugiero que defina una propiedad con el nombre City
, preferiblemente propiedad de dependencia, y luego utilícela de XAML. Algo como esto:
public class ClockControl: UserControl { public static readonly DependencyProperty CityProperty = DependencyProperty.Register ( "City", typeof(string), typeof(ClockControl), new PropertyMetadata(string.Empty) ); public string City { get { return (string)GetValue(CityProperty); } set { SetValue(CityProperty, value); } } public ClockControl() { InitializeComponent(); } //.......... }
Entonces puedes escribir esto en XAML:
Dado que City
es una propiedad de dependencia, eso significa que incluso puedes Binding
esta manera:
Espero, eso resuelve tu problema!
Esto se hace con el uso de DependencyProperty
, pero no a través del constructor. Simplemente agregando propiedades al control y usándolas desde el código subyacente.
Lea lo siguiente con respecto a DependencyProperty’s:
Como nota visual, lo que esto le permitirá hacer es lo siguiente, y luego usarlo en el código subyacente:
x: directiva de argumentos sería lo que necesitas.
Podría simplificar esto simplemente vinculando la propiedad Tag del control. Rápido y sucio, y tal vez no excesivamente elegante, pero ahorra tiempo agregando otra propiedad.