【问题标题】:Combo Box, Fixed Item Header组合框,固定项目标题
【发布时间】:2014-01-16 14:20:09
【问题描述】:

我有一个带有数据视图视图的列表视图:

 <ListView Name="ListView_DataQuery" SelectionChanged="ListView_DataQuery_SelectionChanged">
    <ListView.View>
        <GridView>

            <GridViewColumn DisplayMemberBinding="{Binding ComputerName}">
                <ComboBox Name="Column1" Background="Transparent" BorderBrush="Transparent" MaxDropDownHeight="800"  Text="Machine Name"
                          SelectedItem="{Binding Filter_ListView_DataQuery}" 
                          AllowDrop="False" IsEditable="True" IsManipulationEnabled="False" IsReadOnly="True" Focusable="False"
                          ItemsSource="{Binding MachineNames}" ForceCursor="True">
                </ComboBox>
            </GridViewColumn>

绑定都在工作,即时过滤,一切看起来都足够好。 问题是我想为我的所有列下拉标题,我已经将此组合框按摩到组合框标题在用户表单加载时显示文本的状态。此框中的文本不可编辑或选择。

我似乎无法弄清楚的问题。 当我将光标放在文本上时,它会显示 TextEdit 光标“我正在寻找的那个”,下一个问题是,当您选择一个项目时,文本会更改为所选项目。

所以一个带有固定标题的下拉列表。 有一个更好的方法吗? 有谁知道如何制作带有固定标题的组合框?

【问题讨论】:

  • IsEditable="True" 你想知道为什么你会得到一个 TestEdit 光标
  • 我认为您没有阅读全部内容。我希望列表在列标题中包含文本,当您单击该列时,会出现下拉列表。当用户单击下拉菜单中的项目时。文字没有改变

标签: c# wpf combobox


【解决方案1】:

所以我没有得到答案,但我想通了。

<Style TargetType="GridViewColumnHeader" >
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <DockPanel>
                            <Grid>
                                <ComboBox Background="Transparent" Foreground="Black" BorderBrush="Transparent" MaxDropDownHeight="8000"
                                          Name="ComboBox_DataQuery_SelectedItem"
                                          MinWidth="120" DockPanel.Dock="Right" HorizontalAlignment="Right" 
                                          SelectedItem="{Binding Filter_ListView_DataQuery}" 
                                          SelectedIndex="{Binding FilterIndex_ListView_DataQuery}" 
                                          Drop="ComboBox_GridView_Filter_DropDownClosed"
                                          DropDownOpened="ComboBox_GridView_Filter_DropDownOpen" Uid="{Binding}"
                                          />
                                <Label Margin="0,0,20,0" DockPanel.Dock="Left" HorizontalContentAlignment="Right" 
                                       Background="Transparent" BorderBrush="Transparent" IsHitTestVisible="False"  Focusable="False"
                                       Content="{Binding}"/>
                            </Grid>
                        </DockPanel>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>



        <ListView DockPanel.Dock="Top" Name="ListView_DataQuery" ItemsSource="{Binding ListView_DataQuery}">
            <ListView.View>
                <GridView>

                    <GridViewColumn x:Name="ComputerName" DisplayMemberBinding="{Binding ComputerName}" Header="Computer Name"></GridViewColumn>
                    <GridViewColumn x:Name="Name" DisplayMemberBinding="{Binding Name}" Header="Property Name"></GridViewColumn>
                    <GridViewColumn x:Name="Type" DisplayMemberBinding="{Binding Type}" Header="Property Type"></GridViewColumn>
                    <GridViewColumn x:Name="Value" DisplayMemberBinding="{Binding Value}" Header="Property Value"></GridViewColumn>
                    <GridViewColumn x:Name="Instance" DisplayMemberBinding="{Binding RelPath}" Header="Instance"></GridViewColumn>

                </GridView>
            </ListView.View>
        </ListView>

当您单击要过滤的项目时,所有效果不佳,我只需将组合框的选定索引设置回 -1

【讨论】:

    猜你喜欢
    • 2017-01-16
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2015-11-14
    相关资源
    最近更新 更多