Я создал пользовательский элемент управления, полученный из ListBox, и у меня возникают проблемы с получением «SelectedItemsList» для привязки к соответствующему свойству в модели представления.Multi-Select ListBox Binding Issue
Проблема: выбранные элементы в списке не вносят ее в свойство, к которому она привязана в модели представления. В поле списка можно выбрать несколько вариантов, но ни один из них не внесен в список в модели представления.
MultiSelectListBox:
public class MultiSelectListBox : ListBox
{
public MultiSelectListBox() { }
public static readonly DependencyProperty SelectedItemsListProperty =
DependencyProperty.Register(
"SelectedItemsList",
typeof(IList),
typeof(MultiSelectListBox),
new PropertyMetadata(default(IList)));
public IList SelectedItemsList
{
get { return (IList) GetValue(SelectedItemsListProperty); }
set { SetValue(SelectedItemsListProperty, value); }
}
}
декларация в MainWindow.xaml:
<local:MultiSelectListBox
DataContext="{StaticResource viewModel}"
DockPanel.Dock="Left"
Visibility="{Binding IsThailandFinal, Converter={StaticResource BoolToVisConverter}, FallbackValue=Visible}"
ItemsSource="{Binding SelectedOutputtapeList}"
SelectionMode="Multiple"
SelectedItemsList="{Binding SelectedOutputTapes, Mode=TwoWay}"
HorizontalAlignment="Right"
Background="DeepSkyBlue"
Foreground="MidnightBlue"
ScrollViewer.VerticalScrollBarVisibility="Visible"
Height="100"
Width="70"
Margin="5"/>
View Model (упрощенно):
public class BTLogFrontEndViewModel : ViewModelBase
{
private List<string> selectedOutputTapes;
public BTLogFrontEndViewModel()
{
selectedOutputTapes = new List<string>();
}
public List<string> SelectedOutputTapes
{
get
{
return selectedOutputTapes;
}
set
{
selectedOutputTapes = value;
OnPropertyChanged("SelectedOutputTapes");
}
}
}
Почтовый код для вашего ObservableCollection и вы видите какую-либо ошибку привязки в окне вывода Visual Studio? –
ObservableCollection - это сборник .NET, не отображающий код. – kformeck
Я имел в виду объявление 'SelectedOutputTapes', а не исходный код ObservableCollection. Кроме того, что вы подразумеваете под «Я имею проблемы»? Можете ли вы уточнить формулировку проблемы? –