Entwickler-Ecke

WPF / Silverlight - ListBox ItemTemplate change Binding


Christoph1972 - Mi 25.12.13 13:10
Titel: ListBox ItemTemplate change Binding
Hi Leute,

ich versuche seit geraumer Zeite den "DisplayMemberPath" von einer ListBox mit ItemTemplate via Code-Behinde zu verändern.

Also bei einer ListBox ohne Template funktioniert das so:

XML-Daten
1:
2:
<ListBox Name="listBoxIDs" DisplayMemberPath="IDName" >   
</ListBox>



den Path kann man mittels Button schön ändern und die Änderung wird auch gleich in der ListBox übernommen und angezeigt.

C#-Quelltext
1:
listBoxIDs.DisplayMemberPath ="IDNumber";                    




Nun möchte ich ein Template verwenden um das ListBoxItem ansprechender zu präsentieren.

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<ListBox Name="listBoxIDs">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Margin="0,5,0,0" Orientation="Horizontal">
                <Image ItemImage" Width="15" Height="15" Source="/Image.png"></Image>
                <TextBlock Margin="
5,0,0,0" Text="{Binding IDName}"></TextBlock>  <---------nun müsste der Path hier verändert werden.
            </StackPanel>            
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>



Irgend wie stehe ich auf der Leitung und mir will einfach nicht einfallen wie ich den Pfad mit einem Button z.B. ändern kann.

Hat jemand eine Idee wie ich das lösen könnte.


Christian S. - Mi 25.12.13 13:58

Ich fürchte fast, man muss über diesen Weg hier gehen: http://msdn.microsoft.com/query/dev12.query?appId=Dev12IDEF1&l=EN-US&k=k(System.Windows.FrameworkTemplate.FindName);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5);k(DevLang-csharp)&rd=true und dann alle Items durchgehen. Was ich nicht weiß, ist, wie man das dann noch für zukünftige Items einstellt :gruebel: Da muss man ja dann noch das Template selber ändern.


Christoph1972 - Mi 25.12.13 22:18

Schade, das hatte ich befürchtet, da ich schon ausgiebig getestet habe. Na ja, dann muss ich das wohl so machen. Falls Items nach kommen muss halt immer iteriert werden, aber gut.


Vielen Dank für deine Unterstützung!