Coat
Coat

Reputation: 717

Can't Reach ViewModel From Within ListBox

I have a ViewModel set as the highest level DataContext for my wpf application but I can't seem to access it when I jump into a ListBox as the new DataContext is the element of the list. A simple example is below.

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

That example won't actually work when it comes to the button click as the ViewModel_ClickFunction isn't on the items within the class.

So is there anyway for me to do {Binding parent.selected_item} or something like that? I just need to be able to access the ViewModel from within the ListBox.

Upvotes: 0

Views: 67

Answers (1)

King King
King King

Reputation: 63327

The DataContext inside ItemTemplate is actually the item itself. So in this case you have to use RelativeSource to walk up the visual tree (to the ListBox) and change the Path to DataContext.ViewModel_DisplayString:

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

Upvotes: 2

Related Questions