C# Can';无法从列表框中访问ViewModel

C# Can';无法从列表框中访问ViewModel,c#,wpf,xaml,mvvm,listbox,C#,Wpf,Xaml,Mvvm,Listbox,我将ViewModel设置为wpf应用程序的最高级别DataContext,但当我跳入列表框时,似乎无法访问它,因为新的DataContext是列表的元素。下面是一个简单的例子 <Window.DataContext> <local:ViewModel/> </Window.DataContext> <StackPanel> <!--1D List--> <ListBox ItemsSource="{Bin

我将ViewModel设置为wpf应用程序的最高级别DataContext,但当我跳入列表框时,似乎无法访问它,因为新的DataContext是列表的元素。下面是一个简单的例子

<Window.DataContext>
    <local:ViewModel/>
</Window.DataContext>
<StackPanel>
    <!--1D List-->
    <ListBox ItemsSource="{Binding my_list}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <!--Individual Elements-->
                <TetxBlock Text="{Binding ViewModel_DisplayString}"/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</StackPanel>

当涉及到按钮单击时,该示例实际上不起作用,因为ViewModel_ClickFunction不在类中的项上


那么,我是否需要执行{Binding parent.selected_item}之类的操作?我只需要能够从列表框中访问ViewModel。

ItemTemplate
中的
DataContext
实际上就是项目本身。因此,在这种情况下,您必须使用
相对资源
沿着可视树(到
列表框
)并将
路径
更改为
数据上下文。ViewModel\u DisplayString

 <TetxBlock Text="{Binding DataContext.ViewModel_DisplayString,
                         RelativeSource={RelativeSource AncestorType=ListBox}}"/>


您最好改用
命令。我不认为您无法访问处理程序。这只是代码隐藏的一部分。通常,当我定义某个处理程序时,我只需在XAML代码中键入它的名称,然后右键单击它并选择导航到事件处理程序。我已经更新了这个问题,以便更清楚地了解问题的内容。