#c# #wpf #xaml #mvvm #combobox
#c# #wpf #xaml #mvvm #выпадающий список
Вопрос:
У меня есть родительский вид с 3 радиокнопками и UserControl MyDataSelector
. MyDataSelector
состоит из выпадающего списка и нескольких других простых элементов управления (флажок, кнопка и т.д.). Выпадающий список MyDataSelector должен быть заполнен разными элементами в зависимости от выбранной кнопки RadioButton в родительском представлении.
Я использую MyDataSelector
в XAML моего родительского представления:
<controls:MyDataSelector CurrentSelectedValue="{Binding InputElement}" DataContext="{Binding childViewModel}" />
где
InputElement
— это строковое свойство в родительской ViewModel, которое я хочу установить, когда пользователь выбирает что-то в выпадающем списке.childViewModel
— это ViewModel моего UserControl.-
Я определил
CurrentSelectedValue
с помощью DependencyProperty:public partial class MyDataSelector: UserControl { public static readonly DependencyProperty CurrentSelectedValueProperty = DependencyProperty.Register("CurrentSelectedValue", typeof(String), typeof(MyDataSelector)); public string CurrentSelectedValue { get {return GetValue(CurrentSelectedValueProperty).ToString(); } set {SetValue(CurrentSelectedValueProperty, value); } ....
-
Вот как выглядит выпадающий список в MyDataSelector:
<ComboBox ItemsSource="{Binding AvailableItems}" SelectedItem="{Binding CurrentSelectedValue, ElementName=me}"/>
-
AvailableItems
— этоObservableCollection<string>
который заполняется разными элементами в зависимости от того, какая кнопка RadioButton была отмечена в родительском представлении. -
И
me
это имяMyDataSelector
UserControl:<UserControl.... x:Name="me">
Кто-нибудь может помочь мне выяснить, почему это не работает? Я вижу, что список AvailableItems
загружен правильно, и я могу выбрать любой элемент в выпадающем списке, но средство получения или установки InputElement
свойства в моей родительской ViewModel никогда не вызывается, поэтому, я полагаю, что что-то не так с привязкой:(
Ответ №1:
Вы пробовали Two-Way Binding
?
<controls:MyDataSelector CurrentSelectedValue="{Binding InputElement, Mode=Two-Way}"
DataContext="{Binding childViewModel}" />
Пожалуйста, посмотрите на привязку.Страница свойств режима в MSDN для получения дополнительной помощи с этим.