我怎么能够:
这是代码:
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding Id}" Width="40"/>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="100" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}"/>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
感谢Kjetil,GridViewColumn.CellTemplate运行良好,自动宽度当然有效但是当使用长于列宽的数据更新ObservativeCollection"Collection"时,列大小不会自行更新,因此这只是一个解决方案.初始显示数据:
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Id}" TextAlignment="Right" Width="40"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="Auto" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}" Width="Auto"/>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud) 我使用的是ListView控件而不是DataGrid我的WPF应用程序.我想给*我的宽度ListView.GridViewColumn,但每当我提供*宽度时ListView.GridViewColumn,它给我一个编译时错误.请建议我如何提供*宽度ListView.GridViewColumn,以便ListView.GridViewColumn在我最大化屏幕时自动填充额外空间.
对此的任何帮助将非常感谢.谢谢
根据此MSDN链接,
没有办法只替换控件的部分可视树; 若要更改控件的可视树,必须将控件的Template属性设置为新的完整ControlTemplate
.
我试图禁用GridViewColumnHeader的点击行为(我需要删除原始控件模板中的一些触发器),但我无法找到本机"ColumnHeaderContainerStyle".我发现的所有人似乎已经做了一些定制,很难获得原始的外观和感觉.
有人可以建议我如何/在哪里可以获得原生WPF控件中定义的原始控件模板?
谢谢你的关注.
我在App.xaml中有以下对象
<Application.Resources>
<ResourceDictionary>
<GridView x:Key="myGridView" x:Shared="false">
<GridViewColumn Header="Created" DisplayMemberBinding="{Binding Path=Created}"/>
... more code ...
Run Code Online (Sandbox Code Playgroud)
我在多个地方使用这个网格视图.例:
<ListView x:Name="detailList" View="{StaticResource myGridView}" ...>
Run Code Online (Sandbox Code Playgroud)
在其中一个用法(例如上面的detailList)中,我想隐藏Created列,可能使用XAML?
有任何想法吗?
我有一个CheckedListBox控件,通过添加DataTemplatea CheckBox到a创建ListView.问题是我也需要列.
以下代码不显示复选框:
<ListView x:Name="lbDatabases" Height="138" Width="498" Canvas.Left="44" Canvas.Top="146">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding DbName}" Header="Databases" Width="498"/>
</GridView>
</ListView.View>
<ListView.ItemTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsActive}" Checked="AnyChange" Unchecked="AnyChange" Style="{x:Null}" Content="{Binding DbName}"
Width="{Binding CheckWidth}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)
但是,如果我注释掉这段代码,一切正常,但没有列:
<ListView.View>
<GridView >
<GridViewColumn DisplayMemberBinding="{Binding DbName}" Header="Databases" Width="498"/>
</GridView>
</ListView.View>
Run Code Online (Sandbox Code Playgroud)
有没有办法拥有一切?
我想使用GridView在列表视图中显示一些信息.我有几个GridViewColumns,一切正常.
但是,希望GridViewColumns内容具有VerticalAlignment(在本例中为Top),但gridvewcolumn intself不提供VerticalContentAlignment依赖项属性.使用DisplayMemberBinding时,也无法提供VerticalAlignment信息.
当使用自定义DataTemplate作为Celltemplate时,我可以将VerticalAlignment ="top"dp添加到例如某些文本块.但这不起作用.是否有任何"漂亮的特殊魔术"来满足这种风格?(
我有一个ObservableCollection,它包含多种类型的视图模型,我想为每个GridViewColumn的CellTemplates中的每个类型创建一个DataTemplate.在这个简单的例子中,我可以创建一个基本的ViewModel,但我希望能够从xaml中完成这个.下面的xaml显示了我想要做的事情,其中一个DataTemplates将用于每个CellTemplate.
如果有一个GridViewColumn.Resources我会在那里定义DataTemplates然后在CellTemplate中使用DataTemplate和ContentPresenter,但我显然不能这样做.我想我可能需要一个TemplateSelector,但我不知道从哪里开始.
<ListView ItemsSource={Binding GenericObservableCollection>
<ListView.View>
<GridView>
<GridViewColumn Header="Type">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type vm:ActionInputViewModel}">
<TextBlock Text="Input"/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ActionOutputViewModel}">
<TextBlock Text="Output"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Value">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type vm:ActionInputViewModel}">
<TextBlock Text="{Binding Property1}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ActionOutputViewModel}">
<TextBlock Text="{Binding Property2}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud) 有谁知道是否有一个隐藏GridViewColumn的选项,如下所示:
<ListView.View>
<GridView>
<GridViewColumn Header="Test" IsVisible="{Binding Path=ColumnIsVisible}" />
</GridView>
<ListView.View>
Run Code Online (Sandbox Code Playgroud)
非常感谢!
编辑:为清楚起见
不幸的是,没有"IsVisible"属性.我正在寻找一种方法来创造它.
编辑:基于反馈的解决方案如下:
<GridViewColumn DisplayMemberBinding="{Binding Path=OptionColumn1Text}"
Width="{Binding Path=SelectedEntitiy.OptionColumn1Width}">
<GridViewColumnHeader Content="{Binding Path=SelectedEntitiy.OptionColumn1Header}" IsEnabled="{Binding Path=SelectedEntitiy.OptionColumn1Width, Converter={StaticResource widthToBool}}" />
</GridViewColumn>
public class WidthToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (int)value > 0;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢大家!
干杯
我在使用TextWrapping在此示例中工作时遇到问题.谁能看到我在这里错了什么?
<ListView Name="listViewReportedException" ItemsSource="{Binding ExceptionDetails}">
<ListView.View>
<GridView>
<GridViewColumn Header="Time" DisplayMemberBinding="{Binding Thrown}" Width="150" />
<GridViewColumn Header="Description" DisplayMemberBinding="{Binding Description}" Width="385">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock TextWrapping="Wrap" Text="{Binding}" Width="385"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Recover action" DisplayMemberBinding="{Binding Action}" Width="90"/>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud) 我使用的是ListView带GridView.有GridViewColumnresize事件吗?
gridviewcolumn ×10
wpf ×10
listview ×5
c# ×3
datatemplate ×3
gridview ×2
xaml ×2
.net ×1
celltemplate ×1
resize ×1
styles ×1
textblock ×1
visibility ×1
word-wrap ×1
wpfdatagrid ×1