使 TextBox 大小适应 GridView wpf 中的列大小?
Make the TextBox size adapt to column size in GridView wpf?
您好,我在 GridView
列单元格内使用 TextBox
。
我能够正确地在 'Parameter' 列中放置和绑定 TextBox
的数据。
<ListView Margin="5"
ItemsSource="{Binding Variables}"
Grid.Column="0"
Grid.Row="1"
Width="570">
<ListView.View>
<GridView>
<GridViewColumn Header="Type" Width="40"/>
<GridViewColumn Header="Parameter" Width="80">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding ParameterName}"
Padding="0"
Margin="0"
Width="Auto"
HorizontalContentAlignment="Stretch"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Expression" Width="80"/>
<GridViewColumn Header="Value" Width="50"/>
<GridViewColumn Header="Default Value" Width="80"/>
<GridViewColumn Header="Value Type" Width="80"/>
<GridViewColumn Header="Show in UI" Width="80"/>
<GridViewColumn Header="Description" Width="80"/>
</GridView>
</ListView.View>
</ListView>
我想要 TextBox
宽度正确适应 'Parameter' 列的宽度,即使我尝试调整列的大小时也是如此。
我尝试设置 TextBox
的 Width
和 HorizontalContentAlignment
属性,但没有成功。
现在看起来是这样的:
任何人都可以建议我如何实现这种行为吗?
您可以为 ListViewItem
添加项目容器样式,将 HorizontalContentAlignment
设置为 Stretch
。您可以从 TextBox
.
中删除 HorizontalContentAlignment
属性
<ListView Margin="5"
ItemsSource="{Binding Variables}"
Grid.Column="0"
Grid.Row="1"
Width="570">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Header="Type" Width="40"/>
<GridViewColumn Header="Parameter" Width="80">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding ParameterName}"
Padding="0"
Margin="0"
Width="Auto"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Expression" Width="80"/>
<GridViewColumn Header="Value" Width="50"/>
<GridViewColumn Header="Default Value" Width="80"/>
<GridViewColumn Header="Value Type" Width="80"/>
<GridViewColumn Header="Show in UI" Width="80"/>
<GridViewColumn Header="Description" Width="80"/>
</GridView>
</ListView.View>
</ListView>
您好,我在 GridView
列单元格内使用 TextBox
。
我能够正确地在 'Parameter' 列中放置和绑定 TextBox
的数据。
<ListView Margin="5"
ItemsSource="{Binding Variables}"
Grid.Column="0"
Grid.Row="1"
Width="570">
<ListView.View>
<GridView>
<GridViewColumn Header="Type" Width="40"/>
<GridViewColumn Header="Parameter" Width="80">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding ParameterName}"
Padding="0"
Margin="0"
Width="Auto"
HorizontalContentAlignment="Stretch"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Expression" Width="80"/>
<GridViewColumn Header="Value" Width="50"/>
<GridViewColumn Header="Default Value" Width="80"/>
<GridViewColumn Header="Value Type" Width="80"/>
<GridViewColumn Header="Show in UI" Width="80"/>
<GridViewColumn Header="Description" Width="80"/>
</GridView>
</ListView.View>
</ListView>
我想要 TextBox
宽度正确适应 'Parameter' 列的宽度,即使我尝试调整列的大小时也是如此。
我尝试设置 TextBox
的 Width
和 HorizontalContentAlignment
属性,但没有成功。
现在看起来是这样的:
任何人都可以建议我如何实现这种行为吗?
您可以为 ListViewItem
添加项目容器样式,将 HorizontalContentAlignment
设置为 Stretch
。您可以从 TextBox
.
HorizontalContentAlignment
属性
<ListView Margin="5"
ItemsSource="{Binding Variables}"
Grid.Column="0"
Grid.Row="1"
Width="570">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Header="Type" Width="40"/>
<GridViewColumn Header="Parameter" Width="80">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding ParameterName}"
Padding="0"
Margin="0"
Width="Auto"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Expression" Width="80"/>
<GridViewColumn Header="Value" Width="50"/>
<GridViewColumn Header="Default Value" Width="80"/>
<GridViewColumn Header="Value Type" Width="80"/>
<GridViewColumn Header="Show in UI" Width="80"/>
<GridViewColumn Header="Description" Width="80"/>
</GridView>
</ListView.View>
</ListView>