我是WPF开发的新手,我有一个ListView,我想冻结标题行,以便在用户滚动列表时不会滚动屏幕.我继承的xaml代码看起来像这样:
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<DockPanel>
<forms:BindableGrid DockPanel.Dock="Top" [code snipped] >
<ListView.View>
<GridView>
<GridViewColumn Header="ColA" DisplayMemberBinding="{Binding ColA}" />
<GridViewColumn Header="ColB" DisplayMemberBinding="{Binding ColB}" />
[etc]
Run Code Online (Sandbox Code Playgroud) 有什么办法可以在WPF中禁用GridViewColumn调整大小?我不想为控件设置样式.
我正在将表绑定到asp.net中的gridview
grdIssues.DataSource = mdtIssues;
grdIssues.DataBind();
Run Code Online (Sandbox Code Playgroud)
问题是我无法控制列宽,asp.net似乎决定了它自己的每列应该是多少宽度.方法如
grdIssues.Columns[0].ItemStyle.Width = 100;
grdIssues.Columns[1].ItemStyle.Width = 100;
Run Code Online (Sandbox Code Playgroud)
不起作用,因为列是动态创建的.我无法相信没有办法在手动创建每一列并填充每一行时做到这一点.
is it possible in wpf to access the header of a gridviewcolumn as gridviewcolumnheader?
I have an object:
GridViewColumn column;
Run Code Online (Sandbox Code Playgroud)
But the "Header" property just returns a string (header text) not the "real" header object.
Can anyone help my?
请看下面的图片

以下是此代码::
<Grid>
<ListView Style="{StaticResource listViewStyle}" Name="transactionListView" HorizontalAlignment="Stretch" VerticalAlignment="Top" ItemsSource="{Binding}" MouseDoubleClick="transactionListView_MouseDoubleClick" IsSynchronizedWithCurrentItem="True" >
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource gridViewHeaderColumnStyle}">
<GridView.Columns>
<GridViewColumn Width="70" Header="Serial" DisplayMemberBinding="{Binding Path=Serial}" />
<GridViewColumn Width="100" Header="Date" DisplayMemberBinding="{Binding Path=Date, StringFormat={}{0:dd-MM-yyyy}}" />
<GridViewColumn Width="200" Header="Seller" DisplayMemberBinding="{Binding Path=Seller}" />
<GridViewColumn Width="200" Header="Buyer" DisplayMemberBinding="{Binding Path=Buyer}" />
<GridViewColumn Width="70" Header="Bales" DisplayMemberBinding="{Binding Path=Bales}" />
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
</Grid>
Run Code Online (Sandbox Code Playgroud) 我有一个我在运行时构造的listView,即在编译时不知道列.
我想将DataTemplate应用于单元格,使TextAlignment属性为TextAlignment.Right.创建列时:
foreach (var col in dataMatrix.Columns)
{
gridView.Columns.Add(
new GridViewColumn
{
Header = col.Name,
DisplayMemberBinding = new Binding(string.Format("[{0}]", count)),
CellTemplate = getDataTemplate(count),
});
count++;
}
private static DataTemplate getDataTemplate(int count)
{
DataTemplate template = new DataTemplate();
FrameworkElementFactory factory = new FrameworkElementFactory(typeof(TextBlock));
factory.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Right);
template.VisualTree = factory;
return template;
}
Run Code Online (Sandbox Code Playgroud)
上面的示例代码无法正常工作,因为单元格内容仍然与左侧对齐.
我有一组数据,我想以这种方式通过WPF ListView呈现:
Column1 Column2 Column3 --GroupName1-- Item1 part2 part3 Item2 part2 part3 --GroupName2-- Item3 part2 part3 Item4 long_text_in_both_columns Item5 part2 part3 --GroupName1-- Item6 part2 part3 Item7 long_text_in_both_columns --GroupName3-- Item8 part2 part3
我开始使用这个基本示例:http://msdn.microsoft.com/en-us/library/ms771309(VS.90).aspx
上面的Item4和Item7有长文本,我想跨越剩余的列(忽略原始列标题的用途).我怎样才能做到这一点?
我已经使用DataTrigger进行了一些XAML设置,以使用自定义TextBlock替换默认的GridViewRowPresenter,但这并不是我想要的.我需要正常显示第1列中的数据并识别第一列的宽度.
继回答类似的问题在这里,我能够设置minWidth的XAML页面上.
我想要做的是在所有ListView中的所有GridViewColumn的控件模板中完成此操作.
这可能吗?
更新:
我在下面尝试了一些简单的示例代码,但它不起作用:
<Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}" >
<Setter Property="MinWidth" Value="200" />
</Style>
</Window.Resources>
<Grid Width="500">
<Border BorderBrush="Black" BorderThickness="2" Margin="20">
<ListView SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn Header="Header 1" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="Hello There"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Header 2" Width="Auto" />
</GridView>
</ListView.View>
</ListView>
</Border>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud) 在我使用公司控制的WinForms应用程序上. C#RadGridViewTelerik
这个RadGridView的一个列是类型的GridViewComboBoxColumn.我想给这个列DataSource填充在运行时,然后设置组合框(的三个重要特性DataSource,DisplayMember,ValueMember).
我怎样才能以编程方式执行此操作?
我试过了
DataGridViewComboBoxColumn comboIBAN =
rgvCheques.Columns["clmnIBAN"] as DataGridViewComboBoxColumn;
Run Code Online (Sandbox Code Playgroud)
但它最终会出现以下错误

我有这个XAML代码
<ListView Name="_lvContacts" ItemsSource="{Binding AccountPhonesList}"
<ListView.View>
<GridView>
<GridViewColumn Header="{Binding Path=ColumnHeader1}" DisplayMemberBinding="{Binding Path=Home}" Width="70" />
<GridViewColumn Header="{Binding Path=ColumnHeader2}" DisplayMemberBinding="{Binding Path=Office}" Width="70" />
<GridViewColumn Header="{Binding Path=ColumnHeader3}" DisplayMemberBinding="{Binding Path=Mobile}" Width="70" />
<GridViewColumn Header="{Binding Path=ColumnHeader4}" DisplayMemberBinding="{Binding Path=Other}" Width="70" />
<GridViewColumn Header="{Binding Path=ColumnHeader5}" DisplayMemberBinding="{Binding Path=Email}" Width="70" />
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
这就是背后的代码
for (int i = 0; i < _lvContacts.Items.Count; i++)
{
string header = _lvContacts.Items[i].ToString();
MyFunction(header);
}
Run Code Online (Sandbox Code Playgroud)
如何从ListView获取GridViewColumn标头?我试图从ItemSources获取GridView但这已经被集合使用了!我不知道我还能说些什么呢.
我希望这是可以理解的.
基本上我有一些CheckBox控件我想用来GridViewColumns在运行时显示或隐藏某些控件.但我没有找到一种IsVisible我可以设置为假的属性.或者甚至是Visibility仅存在的财产GridViewColumnHeader.
关于如何做到这一点的任何想法?
我有一个listView我想在其中显示来自dataBase的项目.它工作正常,但我希望在紫色列表视图中看到单元格中显示的项目为白色,怎么做?
<ListView Margin="127,114,227,357" x:Name="lv" Background="purple" >
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}" Header="First Name" Width="100" />
<GridViewColumn DisplayMemberBinding="{Binding Path=LastName}" Header="Last Name" Width="100" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Email}" Header="Email" Width="100" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Password}" Header=" Password" Width="100" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Address}" Header="Address" Width="100" />
</GridView>
</ListView.View>
Run Code Online (Sandbox Code Playgroud)
我有一个.txt文件,其中包含以下格式的文本:
14:04:43 29.07.2014 Process information for JONAS-PC:
Name Pid CPU Thd Hnd Priv CPU Time Elapsed Time
Idle 0 98 8 0 0 1008:29:34.706 148:49:00.765
chrome 5020 1 14 169 136008 0:00:46.332 0:06:03.319
chrome 5960 0 10 149 335704 0:19:09.992 21:07:14.101
pslist 7564 1 2 164 3324 0:00:00.218 0:00:01.236
wininit 640 0 3 85 2528 0:00:00.078 148:48:53.839
csrss 664 0 14 1091 13240 0:03:13.675 148:48:53.823
services 696 0 6 302 10912 0:00:33.243 148:48:53.776
lsass 716 0 8 959 9176 0:01:01.979 …Run Code Online (Sandbox Code Playgroud) gridviewcolumn ×13
wpf ×11
listview ×7
c# ×6
xaml ×4
.net ×3
gridview ×2
header ×2
asp.net ×1
code-behind ×1
datatemplate ×1
object ×1
radgridview ×1
string ×1
telerik ×1
vb.net ×1
winforms ×1