获取绑定列表框中选定项的值

Get value of selected item in binded listbox

我想在 listbox 中显示的所选项目的 doubleclick 事件上获取 string 值。我正在使用 mvvm 架构。 下面是代码:

<ListBox ItemsSource="{Binding RecentProjects}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock>
                         <Run Text="{Binding FileName}"/>
                         <Run Text="{Binding CreationTime}"/>
                    </TextBlock>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseDoubleClick">
                <i:InvokeCommandAction Command="{Binding SelectedCommand}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </ListBox>

我的 ViewModel 中的代码如下所示:

private ObservableCollection<FileItem> _recentProjects = new ObservableCollection<FileItem>();
public ObservableCollection<FileItem> RecentProjects
    {
        get { return _recentProjects; }
        set { _recentProjects = value; }
    }

public RelayCommand SelectedCommand { get; private set; }
private void Selected()
    {
        //string fileName = RecentProjects.SelectedItem ===> Need stringvalue of filename
    }

而且,在 FileItem 模型中,我有一个 FileName 和一个 CreationTime 属性。 我想获取 RecentProjects Observable 集合中所选项目的 FileName 的字符串值。我该怎么做?

您应该将 属性 定义为您的 ListBox.SelectedItem:

您的视图模型:

    FileItem _myItem;
    public FileItem MyItem
    {
        get
        {
            return _myItem;
        }
        set
        {
            _myItem = value;
            OnPropertyChanged("MyItem");
        }
    }

    private void Selected()
    {
        string fileName = MyItem.FileName;
    }

你的Xaml:

<ListBox ItemsSource="{Binding RecentProjects}" SelectedItem="{Binding MyItem}">
        <ListBox.ItemTemplate> ...