Athanviel
Athanviel

Reputation: 357

SelectedItem of SelectedItem

first of all I would like to thank you for the many good posts that i read in this forum. Unluckily I could not find anything of help for my current problem (either here or anywhere else).

What I'm trying to do sounds quite simple, but I have no clue how to get it to work ... perhaps I'm still to new to wpf or I don't thing wpfy enough :)

I'm designing a front end for a part in an automated manufacturing:

What I would like to have is:

The first two points are quite simple and work nicely:

I tried to bind the Text of a Textblock to the ID of the selected Part ... and fail.

Probably I could use some global variables in the code behind - but that sound very ugly.

Can anybody help?

Upvotes: 0

Views: 205

Answers (3)

Athanviel
Athanviel

Reputation: 357

I have got a solution ... it is not nice but works.

  • I created an event in the pallet, that triggers, when the selected part-place changes
  • I handle the event in the pallet-place and create a new one
  • And finally I handle it in the overview and change the detailview accordingly

Most likely there are much nicer solutions, but it will suffice.

Upvotes: 1

brunnerh
brunnerh

Reputation: 184622

Context is important, if i use a ContentControl and bind its content to the SelectedItem like this:

<ContentControl Content="{Binding SelectedItem, ElementName=mylistbox}">

I can bind to the ID of the selected item in the DataTemplate like this:

<ContentControl.ContentTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding ID}" />
    </DataTemplate>
</ContentControl.ContentTemplate>

That is because setting the Content of the ContentControl automatically sets the DataContext as well, and this binding is relative to the DataContext since no source (ElementName, RelativeSource, Source) has been specified.

I do not know how your UserControl handles the context, if the DataContext is not affected such bindings will not work. You would need to bind directly then:

<uc:MyDetailsView Data="{Binding SelectedItem, ElementName=mylistbox}">
    <!-- ... -->
        <TextBlock Text="{Binding SelectedItem.ID, ElementName=mylistbox}" />

This of course defeats the purpose of having the binding on the UserControl itself in the first place. But unless you post some relevant code it's quite hard to tell what is wrong.

Also check the Output window in VisualStudio, binding errors will show up there and might provide valuable information as to what went wrong.

Upvotes: 0

Arcturus
Arcturus

Reputation: 27055

Perhaps try an ElementName binding?

<TextBlock Text="{Binding ElementName=Name_of_your_Listbox, Path=SelectedItem.ID" />

Can you post a bit more code of your TextBlock and your Binding?

Upvotes: 0

Related Questions