【问题标题】:How to "Fill" a GridViewColumn with ComboBox (WPF)?如何用 ComboBox (WPF) “填充” GridViewColumn?
【发布时间】:2011-04-01 02:55:21
【问题描述】:

我正在寻找一种用组合框“完全填充”GridViewColumn 的方法。我可以使用ComboBox 创建一个单元格模板,并且工作正常。但是ComboBox 的宽度和高度与GridViewColumn 不一致。 即使我尝试设置相同的高度/宽度GridViewColumn 也会隐藏组合框的某些部分。

必须有一些设置或样式来指示 WPF 将ComboBox 完全填充到GridViewColumn 的可用空间中

这是我的 XAML。

<Window x:Class="WPFStarter.ComboInsideListView.ComboBoxInsideListViewUsingObject"
        x:Name="userControl"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="ComboBoxInsideListViewUsingObject" Height="300" Width="400">
    <Grid>
        <ListView x:Name="listView" ItemsSource="{Binding ElementName=userControl, 
            Path=DataContext.Items}" SelectedItem="{Binding ElementName=userControl, Path=DataContext.SelectedItem, Mode=TwoWay}">                   
            <ListView.View>
                <GridView>
                   <GridViewColumn Header="First Name"  DisplayMemberBinding="{Binding Path=First}"/>
                   <GridViewColumn Header="Gender">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <ComboBox x:Name="cmb_Gender" Width="75" SelectedValue="{Binding Path=Gender}"                    
                  ItemsSource="{Binding ElementName=userControl, Path=DataContext.Genders}" GotFocus="ComboBox_GotFocus"         />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>

            </ListView.View>

        </ListView>
    </Grid>
</Window>

【问题讨论】:

    标签: c# wpf listview gridview combobox


    【解决方案1】:

    在 ListViews-resources 中包含以下样式。然后你可以将 ComboBox 的 Horizo​​ntalAlignment-property 设置为 HorizontalAlignment="Stretch" ,它会如你所愿:

     <ListView.Resources>
              <Style TargetType="ListViewItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
              </Style>
     </ListView.Resources>
    

    【讨论】:

    • 谢谢。这工作正常,但它仍然在 Combo 和 Cell 边框之间留有一些余量。有没有办法消除它?
    • 您可以尝试更改ControlTemplate:msdn.microsoft.com/en-us/library/ms788717.aspx
    • 谢谢,这个链接有帮助。将您的答案标记为解决方案。
    【解决方案2】:

    你试过了吗:

    <ComboBox x:Name="cmb_Gender" Width="75" SelectedValue="{Binding Path=Gender}"                    
        ItemsSource="{Binding ElementName=userControl, Path=DataContext.Genders}" 
        GotFocus="ComboBox_GotFocus" 
        HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
    

    【讨论】:

      猜你喜欢
      • 2014-12-06
      • 2012-11-10
      • 2011-07-02
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多