嗨,我尝试从列表框中获取特定项目。我试图绑定,但我崩溃了。使用棱镜框架如何绑定以从列表框中获取特定项目,我需要制作什么模板。这是测试代码:
<ListBox SelectedItem="{Binding SelectIndex}" HorizontalAlignment="Left" Height="297" Margin="57,41,0,0" VerticalAlignment="Top" Width="681">
<ListBoxItem>
<TextBlock Text="Test123"/>
</ListBoxItem>
<ListBoxItem>
<TextBlock Text="Test123"/>
</ListBoxItem>
</ListBox>
C# 代码:
public int SelectIndex
{
get
{
return 1;
}
}
如果我想要此列表中的特定项目,如何获取?绑定列表框以选择项目需要什么变量类型?
它崩溃了,因为您将SelectedItem
(类型object
(绑定到视图模型 (VM( 中的SelectIndex
属性(int
属性(。ListBox
与许多 WPF 控件一样,具有用于绑定的不同SelectedIndex
和SelectedItem
属性。
如果要绑定到int
属性以获取索引,则应绑定ListBox
的SelectedIndex
属性。
改变:
<ListBox SelectedItem="{Binding SelectIndex}" ...
。自:
<ListBox SelectedIndex="{Binding SelectIndex}" ...
您的 VM 仍为:
public int SelectIndex { get { return 1; } }
虽然为了更有用并允许用户选择不同的项目,但它应该是:
public int SelectIndex { get; set; } // TODO: add support for INotifyPropertyChanged
(可选(您可以添加:
<ListBox SelectedIndex="{Binding SelectIndex}"
SelectedItem="{Binding SelectedItem}" ...
视图模型:
public int SelectIndex { get; set; } // TODO: add support for INotifyPropertyChanged
// replace object with your type
public object SelectedItem { get; set; } // TODO: add support for INotifyPropertyChanged