WPF ListViewItemTemplate GridViewColumn

{Eve}

Mitglied
Hi,

ich habe eine ListView mit verschiedenen GridViewColumns.
Die ListView befülle ich dynamisch mit verschiedenen ListViewItems.
Mit "verschieden" meine ich das die einzelne ListViewItems unterschiedliche andere Elemente beinhalten, also unterschiedlich designed sind.

Das Design der unterschiedlichen ListViewItems lade ich per Template. Das funktioniert auch soweit.

Allerdings habe ich das Problem das ich nicht weiß wie ich es in dem Template definieren kann welches Element in welcher GridViewColumn angezeigt wird.
Zur Zeit ignoriert er die GridViewColumns und stapelt die Elemente eines ListViewItems hintereinander.

Kann mir jemand einen Rat geben wie ich das machen kann?

Gruss
 
Hi

Ich bin ein bischen weiter.

Wenn ich jetzt folgendes ListViewItem- Template habe:

Code:
<Style x:Key="myKey" TargetType="{x:Type ListViewItem}">
            <Setter Property="Template">
                <Setter.Value>

                    <ControlTemplate TargetType="{x:Type ListViewItem}">

                        <StackPanel x:Name="ItemPanel" Orientation="Horizontal" Margin="5" Height="40">

                            <TextBox Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}, Path=Width}"
                                     Text="{Binding Path=PositionNumber, UpdateSourceTrigger=PropertyChanged}"/>

                            <TextBox Text="{Binding Path=PositionDescription, UpdateSourceTrigger=PropertyChanged}"/>
                          
                        </StackPanel>

                    </ControlTemplate>

                </Setter.Value>
            </Setter>

        </Style>


Wie muss ich dann das

Code:
Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}, Path=Width}"

richtig schreiben damit ich meine Textbox so lang machen kann wie die erste Spalte meines ListView (GridView).

Ich mein damit sollte ich doch an die Länge der Spalte kommen oder? Ich weiß nur nicht wie ich es syntaktisch schreiben muss damit es richtig ist.

Gruss
 
Hi,

es ist fantastisch wenn man nur die richtigen Dinge ins Google- Suchfeld eintippt.

Ich habe es jetzt so gelöst:

in dem ListView habe ich der Column einen Namen gegeben:
Code:
<GridViewColumn x:Name="GridViewColumnPosition"  Width="100" Header="Position"></GridViewColumn>

Und in meinem Template habe ich ich mich dann auf diesen Namen bezogen:
Code:
<TextBox Width="{Binding ElementName=GridViewColumnPosition, Path=Width}" />

Vielleicht hilft es ja mal jemand anderem weiter. :)

Gruss
 
Zurück