2016-06-03 15 views
0

Ich habe Listview und für jede Spalte ein Textfeld. Wie man Textboxbreite an passende Spaltenbreite der Listview anbringt? Beispielcode:Wpf ListView mit Textboxen als Filter verwendet

<ListView x:Name="listView" Margin="10,41,10,10"> 
     <ListView.View > 
      <GridView> 
       <GridViewColumn Header="ASD"> 
       </GridViewColumn> 
       <GridViewColumn Header="ASD2"> 
       </GridViewColumn> 
       <GridViewColumn Header="ASD3"> 
       </GridViewColumn> 
      </GridView> 
     </ListView.View> 
    </ListView> 
    <TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="10,14,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="97"/> 
    <TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="23" Margin="107,14,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="93"/> 
    <TextBox x:Name="textBox2" HorizontalAlignment="Left" Height="23" Margin="200,14,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> 
+0

ich verstehe Ihre Frage nicht: D sind die 'TextBox's außerhalb der' ListView'? –

+0

Ja, ich möchte Listview mit einigen Modellen verknüpft haben. Textfelder sind Filterfelder – igorr

+0

Was hindert Sie daran, die Eigenschaft 'Width' für die GridViewColumn zu setzen? – sr28

Antwort

0

Sie können eine Ressource auf Ihrer Seite erstellen, die eine Breite definiert wird und die Nutzung dieser Ressource in Ihrer Textbox und Ihre Spaltenbreite. Hier ist etwas, das Ihnen helfen kann: Specify width/height as resource in WPF

1

Wenn Sie auf den Wert binden möchten, können Sie diese verwenden:

<ListView> 
    <ListView.View > 
     <GridView> 
      <GridViewColumn x:Name="gvc1" Header="ASD" Width="{Binding ElementName=textBox, Path=Text}"> 
      </GridViewColumn> 
       <GridViewColumn x:Name="gvc2" Header="ASD2"> 
      </GridViewColumn> 
       <GridViewColumn x:Name="gvc3" Header="ASD3"> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 

Ansonsten:

<ListView> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="ASD" Width="{Binding ElementName=textBox, Path=Width}"> 
      </GridViewColumn> 
      <GridViewColumn Header="ASD2" Width="{Binding ElementName=textBox1, Path=Width}"> 
      </GridViewColumn> 
      <GridViewColumn Header="ASD3" Width="{Binding ElementName=textBox2, Path=Width}"> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 

Der andere Weg, um

<ListView> 
    <ListView.View > 
     <GridView> 
      <GridViewColumn x:Name="gvc1" Header="ASD"> 
      </GridViewColumn> 
       <GridViewColumn x:Name="gvc2" Header="ASD2"> 
      </GridViewColumn> 
       <GridViewColumn x:Name="gvc3" Header="ASD3"> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 
<StackPanel Grid.Row="1"> 
    <TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="{Binding ElementName=gvc1, Path=Width}"/> 
    <TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="{Binding ElementName=gvc2, Path=Width}"/> 
    <TextBox x:Name="textBox2" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="{Binding ElementName=gvc3, Path=Width}"/> 
</StackPanel> 
+0

Ich denke OP will anders herum ... – Pikoh

+0

Bist du sicher, dass deine zweite Antwort funktioniert? Haven't versuchte es, aber ich bin mir nicht sicher, dass Sie so an die Listview-Spalte binden können – Pikoh

+0

Ja, ich habe es versucht, es funktioniert –