[英]How to get specific item listbox C# MVVM WPF
嗨,我尝试从列表框中获取特定项目。 我尝试绑定但我崩溃了。 使用 Prism 框架我如何绑定以从列表框中获取特定项目,我需要制作什么模板。 这是测试代码:
<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;
}
}
如果我想要此列表中的特定项目,我该如何获取? 将列表框绑定到 select 项目需要什么变量类型?
它崩溃了,因为您将SelectedItem
(类型为object
)绑定到您的视图 model (VM)中的SelectIndex
属性( int
属性)。 像许多 WPF 控件一样, ListBox
具有用于绑定的不同SelectedIndex
和SelectedItem
属性。
如果要绑定到int
属性以获取索引,则应改为绑定ListBox
的SelectedIndex
属性。
改变:
<ListBox SelectedItem="{Binding SelectIndex}" ...
...至:
<ListBox SelectedIndex="{Binding SelectIndex}" ...
您的虚拟机保持为:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.