在我的Silverlight 3用户控件中,我显示了一个基本的DataGrid控件.我需要以编程方式生成列,如下所示:
Style headerStyle = (Style)Resources["ColumnHeaderStyle"];
DataGridTextColumn col = new DataGridTextColumn();
col.HeaderStyle = headerStyle;
dataGrid.Columns.Add(col);
Run Code Online (Sandbox Code Playgroud)
样式定义如下:
<Style x:Name="ColumnStyle" x:Key="ColumnHeaderStyle"
TargetType="prim:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Loaded="StackPanel_Loaded">
<TextBlock Text="{Binding Name}" />
<TextBlock Text="{Binding Data}" />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
我想将标题的数据上下文设置为"标题"对象(具有"名称"和"数据"属性,这些属性在DataTemplate中引用).不幸的是,我无法在其他地方使用StackPanel_Loaded事件,因为当用户启动列拖放操作时也会调用事件处理程序.
设置DataGrid列标题的DataContext的正确方法是什么?
在我的一个项目中,我继承了ListView并通过设置新的控件模板来覆盖样式.我还重写了列标题样式.到目前为止,我已经找到了两种方法:
1)通过设置样式键并引用GridView中的样式:
<Style TargetType="{x:Type GridViewColumnHeader}" x:Key="MyHeaderStyle">
<Setter Property="Background" Value="Wheat" />
</Style>
<GridView ColumnHeaderContainerStyle="{StaticResource MyHeaderStyle}">
Run Code Online (Sandbox Code Playgroud)
2)不为上述样式设置样式键.现在我不需要在GridView中引用样式,但它也会覆盖我的应用程序中的所有listview头,而不依赖于listview类型.
由于我在我的应用程序中使用了很多列表视图,因此我希望以第三种更灵活的方式实现这一点; 通过在ListView样式中设置GridView.ColumnHeaderContainerStyle.这样我就不需要在每个GridView中引用标题样式.这是目前为止XAML的简化版本:
<Window.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}" x:Key="MyHeaderStyle">
<Setter Property="Background" Value="Wheat" />
</Style>
<Style TargetType="{x:Type list:MyListView}">
<Setter Property="GridView.ColumnHeaderContainerStyle" Value="{StaticResource MyHeaderStyle}" />
<Setter Property="Background" Value="Linen" />
</Style>
</Window.Resources>
<list:MyListView>
<list:MyListView.View>
<GridView>
<GridViewColumn Header="Column1" />
<GridViewColumn Header="Column2" />
</GridView>
</list:MyListView.View>
</list:MyListView>
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这并未设置标题样式...如果我对上面的XAML进行了此更改,则可以:
<GridView ColumnHeaderContainerStyle="{StaticResource MyHeaderStyle}">
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我是 WPF 新手,在 WPF 应用程序中,我使用 Listview Gridview 来显示数据。我已经自定义了 Listview 的样式,现在我想更改 Listview Gridview Column Header 鼠标悬停效果的默认光泽蓝色
我用谷歌搜索并更改了列标题的样式,但我无法调整列表视图列的大小(无法使用鼠标拖动调整列标题的大小)。
有没有相同的解决方案?
提前致谢
我想将水平标题合并(跨度)到QTableWidget.
我需要有一个可观察的类型列表,该列表将显示在带有一个列的TableView中,选中后将在右侧显示其余信息.TableView包含在TitledPane中,它包含在Accordion中.见下图:

正如您在此场景中看到的,我不想显示列标题.
Pane header = (Pane) list.lookup("TableHeaderRow");
header.setMaxHeight(0);
header.setMinHeight(0);
header.setPrefHeight(0);
header.setVisible(false);
Run Code Online (Sandbox Code Playgroud)
但是,它似乎不适用于JavaFX 8.查找("TableHeaderRow")方法返回null,这使我认为"TableHeaderRow"选择器不再存在.
是否有更新的解决方法来删除/隐藏JavaFX 8中的表头?
我有一个WinForms .NET数据网格,其数据源是一个List<cLineItem>被调用的行.cLineItem是一个非常简单的类,具有单位(int),描述(字符串)和单位数量(浮点)等属性.
在代码中,我填充行列表,然后设置数据源:
dataGridView1.DataSource = lines;
Run Code Online (Sandbox Code Playgroud)
这正确地填充了网格,但是,即使网格中的每个列都设置为可排序,当您单击列标题时,它也不会对行进行排序.
我有一个项目清单.单击列标题时,列将进行排序,列标题中将显示排序箭头图标.但是,即使在过滤记录之后,该列也会保留排序和排序箭头图标(通过在过滤器文本字段中输入文本并按"过滤器"按钮).我希望每次过滤记录时都会从列中删除排序和排序箭头图标.我发现了一些关于在网格重新加载时清除排序箭头图标的帖子(请参阅下面的链接).但是我怎样才能将这个应用到我的情况中呢?任何提示将非常感激.
http://www.sencha.com/forum/showthread.php?48437-Help-How-to-remove-sort-field-when-reload-grid
http://www.sencha.com/forum/showthread.php?3098-Clear-grid-s-sort-arrow-icon
我在C#Net 2.0 Windows Forms中有一个ListView,在应用程序启动时大约有十列填充了数据.数据量巨大,因此不能快速重新加载.我的ListView具有详细信息视图,允许用户单独调整每列的大小.
用户应能够一次隐藏十列或多列中的任何一列,并在非特定行中随时取消隐藏列.隐藏列时不应删除数据.
我尝试了以下的事情但结果并不令人满意:
1)调整大小为0的列的大小将使其稍微消失,直到用户开始使用列.用户会意外地将其重新调整大小,因为在我的ListView中,允许用户手动调整每列的大小.
2)只是删除列出现以下问题:当我尝试将列添加回来时,列不记得它的位置和大小.这个位置是主要问题,我将尝试解释原因.如果我的用户决定首先隐藏"第2列"然后"第3列"并且用户稍后在2之前取消隐藏3,则"索引2"不存在,因此我无法在第3号索引处插入并且异常上升.即使我在删除之前记住了索引位置,也不能简单地将列放回到该索引,因为我不知道以前的列是否已经隐藏过,或者哪些列在之前和之后丢失或隐藏或未隐藏.所以场景可能是这样的:1显示,2隐藏,3隐藏,4显示,5隐藏,6隐藏,7隐藏,8显示,9隐藏,10隐藏.
可能的解决方案"1)"和"2)"在场景中自动排除.更好的是甚至使列的宽度为零,但由于我的用户应该能够随时根据需要调整列的大小,并且调整大小为零,因此无法从用户隐藏.用户将通过调整大小取消隐藏它,我的系统会认为它仍然是隐藏的等等.如果隐藏的列可以只是"重新调整大小"或者我们如何命名其他内容,它看起来不专业.
有人有更好的主意吗?为什么listView列没有"可见"或"隐藏"属性,我想知道?如果之前有人这样做,请发布解决方案.
我必须补充一点,我在添加数据时使用listview中所有列的自动调整大小.因此,下面的答案不起作用.resize事件无法检测-1的宽度.添加数据时,将调整宽度为0的"所有不可见列"的大小.由于listview会删除与列长度重叠的数据,因此我需要永久自动化它.Explorer没有这个问题,因为它使列适合数据的长度.C#没有这样的高级列表视图,这里我每次添加数据时都要将列设置为-1.在这个概念中,用于隐藏列的column.width = 0的概念不起作用.
我打算绘制多列数据文件.用第1列和第i列绘制xy图.所以基于手册的工作命令.哪个gnuplot版本开始有这样的功能?我的机器安装版本4.2,但无法正常工作.对于columnheader()的同样问题,
我想确保它是我的代码问题或版本.
我正在寻找一种方法将按钮添加到 r Shiny 中的数据表:每次单击时向数据表添加一个空列(以及首先制作表格的数据框,用户可以用数字或文本值 并设置自己的列名来描述条目值的类型。
例如,将实验室笔记记录手动添加到闪亮的应用程序中已经存在的仪器数据中
我在问,如果一个比我有更好线索的更熟练的人知道如何做到这一点。我已经阅读了一堆页面,但我发现的示例充其量提供了 1 个具有固定名称的固定空列
包中的虚拟表:library(DT)
ui <- basicPage(
h2("The mtcars data"),
DT::dataTableOutput("mytable")
)
server <- function(input, output) {
output$mytable = DT::renderDataTable({
mtcars
})
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)