Подтвердить что ты не робот

Как вы передаете параметры из xaml?

Я создал свой собственный UserControl "ClockControl", который я инициализирую через главное окно XAML.

Единственная проблема заключается в том, что я должен передать параметр конструктору управления часами, и я не знаю, как я могу это сделать.

Это работает, если у меня нет параметров:

<myControl:ClockControl></myControl:ClockControl>

Но как передать этот параметр?

Вот конструктор:

public ClockControl(String city)
    {
        InitializeComponent();
        this.initController();
        ......
        .....
    }

Спасибо заранее.

4b9b3361

Ответ 1

Ваш конструктор:

public ClockControl(String city)
{
    InitializeComponent();
    this.initController();
    //...
}

Прежде всего, если вы хотите использовать ClockControl из XAML, вам нужен конструктор по умолчанию, это означает конструктор, который не принимает никаких параметров. Таким образом, вышеупомянутый конструктор не будет работать.

Я бы предложил вам определить свойство с именем City, предпочтительно свойство зависимости, а затем использовать его из XAML. Что-то вроде этого:

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

Затем вы можете записать это в XAML:

<myControl:ClockControl City="Hyderabad" />

Так как City является свойством зависимости, это означает, что вы даже можете сделать Binding следующим образом:

<myControl:ClockControl City="{Binding Location}" />

Надежда, которая решает вашу проблему!

Ответ 2

Это делается с использованием DependencyProperty 's, но не через конструктор. Просто добавив свойства к самому элементу управления и используя их из кода.

Прочитайте следующее в отношении DependencyProperty:

Как наглядное замечание, что это позволит вам сделать, это следующее, а затем использовать его в коде:

<myControl:ClockControl City="New York"></myControl:ClockControl>

Ответ 3

Это упростит, просто привязывая свойство Tag элемента управления. Быстрая и грязная, и, возможно, не слишком элегантная, но экономит время, добавляя еще одно свойство.