【发布时间】:2014-09-24 12:43:39
【问题描述】:
我创建了一个从 ListBox 派生的自定义控件,但在将“SelectedItemsList”绑定到视图模型中的相应属性时遇到问题。
问题:列表框中的选定项没有进入它在视图模型中绑定的属性。列表框允许进行多项选择,但这些都不能进入视图模型中的列表。
多选列表框:
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"/>
查看模型(简化):
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 集合,没有可显示的代码。
-
我的意思是
SelectedOutputTapes的声明,而不是 ObservableCollection 的源代码。另外,I am having issues是什么意思?你能对问题陈述更准确吗? -
Rohit,我已经更详细地更新了我的问题。感谢您到目前为止的帮助,我很感激。
标签: c# wpf xaml listbox wpf-controls