Я успешно создал UserControl с свойством Depedency, позволяющим мне привязываться к одному TextBox внутри моего UserControl. Однако я не знаю, как это сделать, когда у меня есть много элементов управления в моем UserControl и вы хотите привязываться только к одному свойству (построенному из значений во многих элементах управления)?WPF UserControl со многими элементами управления - как создать свойство зависимостей, которое сопоставляется ко многим элементам управления?
UserControl имеет 3 текстовые поля для года, месяца и даты, я хочу, чтобы связать это с одной дате собственности, до сих пор я получил это:
<UserControl x:Class="MyApp.DateControl"...>
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBox Name="textbox_year" />
<TextBox Name="textbox_month" />
<TextBox Name="textbox_day" />
</StackPanel>
</StackPanel>
</UserControl>
Что мне нужно добавить в код позади чтобы свойство Date было получено из трех текстовых полей, поэтому в другом контейнере с помощью моего элемента управления можно просто привязать к Date. Я понимаю, так как мой UserControl является целью я должен сделать Dependency Property, но это кажется настолько сложным ..
public partial class DateControl : UserControl
{
public DateControl()
{
InitializeComponent();
}
public DateTime Date
{
get
{
DateTime dt;
if (DateTime.TryParseExact(String.Format("{0}-{1}-{2}", this.textbox_year.Text, this.textbox_month.Text, this.textbox_day.Text), "yyyy-MM-dd", null, System.Globalization.DateTimeStyles.None, out dt))
return dt;
else
return DateTime.MinValue;
}
}
Хмм, я так не думаю, что использование конвертера выглядит намного больше - я не думаю, что необходимо создать 3 дополнительных привязки, чтобы получить одну дату esp. при привязках 90% времени не смогут сделать дату - см. мой ответ .. – markmnl
Эти привязки не являются «лишними». В вашем коде вы выполняете эти привязки вручную в коде ... Хотя в моем случае вся логика преобразования инкапсулирована в конвертер, что упрощает логику управления основным пользователем. И эти привязки не сбой, если вы поместите правильную схему преобразования в конвертер. –
Основная логика управления пользователем проще без привязок, я думаю. Эти привязки будут без необходимости запускать ваш конвертер каждый раз при нажатии клавиши. Неважно, это просто не то, что им нужно. – markmnl