Я новичок WPF, с UserControl, внутри пользовательского элемента управления, я хочу привязать к типу элемента Свойство, хранящееся в моем dataContext (называемом "AssignType") ... "AssignType" определяет элемент управления для хранения " Значение "свойство.
AssignType может быть Textbox, Richtextbox, ComboBox, DatePicker, RadioButton ... и т.д.
Поле значения должно быть привязано к элементу управления «AssignType» с использованием двухсторонней привязки - более того, данные элементов (например, комбинированный источник) также должны быть связаны
единственный способ, которым мне удалось этого добиться, - создать пользовательский элемент управления, изучить DataContext и создать «Назначенные элементы управления» вручную, а затем применить все изменения к событию Controls Changed,
Моя проблема в том, что это не похоже на "очень WPF" ...
Как правильно выполнить такую задачу?
(метод измерения тока нагрузки образца)
Select Case AssignedType
Case Items.FieldTypes.IsText,
Tb = New TextBox
Try
If Not IsNothing(Source.ValueItem) Then _
Tb.Text = Source.ValueItem
Catch
End Try
Tb.SetBinding(TextBox.TextProperty, BindingSource)
AddChild(Tb)
Case Items.FieldTypes.IsDropDownValue
cbo = New ComboBox
cbo.HorizontalAlignment = Windows.HorizontalAlignment.Stretch
PopulateComboValues(cbo, Source)
AddChild(cbo)
Case Items.FieldTypes.IsDateValue
Dt = New DatePicker
Dt.HorizontalAlignment = Windows.HorizontalAlignment.Stretch
Try
If IsDate(Source.ValueItem) Then Dt.SelectedDate = Convert.ToDateTime(Source.ValueItem)
Catch
End Try
Dt.Margin = New Thickness(5, 0, 5, 0)
AddChild(Dt)
Case Items.FieldTypes.IsLargeText
Rtf = New RichTextBox
Rtf.HorizontalAlignment = Windows.HorizontalAlignment.Stretch
Try
If Not IsNothing(Source.ValueItem) AndAlso Source.ValueItem.Trim <> "" Then
Dim ms As MemoryStream = New MemoryStream(ASCIIEncoding.Default.GetBytes(Source.ValueItem))
Rtf.Selection.Load(ms, DataFormats.Xaml)
End If
Rtf.SpellCheck.IsEnabled = True
Catch
End Try
Rtf.Height = 100
AddChild(Rtf)
Case Items.FieldTypes.IsImageList