繁体   English   中英

如何获取特定项目列表框 C# MVVM WPF

[英]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具有用于绑定的不同SelectedIndexSelectedItem属性。

如果要绑定到int属性以获取索引,则应改为绑定ListBoxSelectedIndex属性。

改变:

<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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM