标签: gridviewcolumn

如何在WPF中自动调整和右对齐GridViewColumn数据?

我怎么能够:

  • 右对齐ID列中的文本
  • 根据具有最长可见数据的单元格的文本长度使每个列自动调整大小?

这是代码:

<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)

wpf xaml listview gridview gridviewcolumn

82
推荐指数
6
解决办法
14万
查看次数

ListView.GridViewColumn(*)width

我使用的是ListView控件而不是DataGrid我的WPF应用程序.我想给*我的宽度ListView.GridViewColumn,但每当我提供*宽度时ListView.GridViewColumn,它给我一个编译时错误.请建议我如何提供*宽度ListView.GridViewColumn,以便ListView.GridViewColumn在我最大化屏幕时自动填充额外空间.

对此的任何帮助将非常感谢.谢谢

wpf listview gridview gridviewcolumn wpfdatagrid

39
推荐指数
1
解决办法
6万
查看次数

我在哪里可以找到默认的WPF控件模板?

根据此MSDN链接,

没有办法只替换控件的部分可视树; 若要更改控件的可视树,必须将控件的Template属性设置为新的完整ControlTemplate

.

我试图禁用GridViewColumnHeader的点击行为(我需要删除原始控件模板中的一些触发器),但我无法找到本机"ColumnHeaderContainerStyle".我发现的所有人似乎已经做了一些定制,很难获得原始的外观和感觉.

有人可以建议我如何/在哪里可以获得原生WPF控件中定义的原始控件模板?

谢谢你的关注.

wpf styles gridviewcolumn controltemplate

36
推荐指数
3
解决办法
2万
查看次数

WPF:如何使用XAML隐藏GridViewColumn?

我在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?

有任何想法吗?

.net wpf gridviewcolumn

31
推荐指数
4
解决办法
3万
查看次数

带有GridViewColumn和DataTemplate的WPF ListView

我有一个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)

有没有办法拥有一切?

wpf listview datatemplate gridviewcolumn

22
推荐指数
2
解决办法
7万
查看次数

GridViewColumn内容和VerticalAlignment

我想使用GridView在列表视图中显示一些信息.我有几个GridViewColumns,一切正常.

但是,希望GridViewColumns内容具有VerticalAlignment(在本例中为Top),但gridvewcolumn intself不提供VerticalContentAlignment依赖项属性.使用DisplayMemberBinding时,也无法提供VerticalAlignment信息.

当使用自定义DataTemplate作为Celltemplate时,我可以将VerticalAlignment ="top"dp添加到例如某些文本块.但这不起作用.是否有任何"漂亮的特殊魔术"来满足这种风格?(

c# wpf xaml gridviewcolumn

18
推荐指数
1
解决办法
6004
查看次数

GridViewColumn CellTemplate中每个DataType的DataTemplate

我有一个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)

wpf datatemplate gridviewcolumn celltemplate

17
推荐指数
1
解决办法
1万
查看次数

C#/ WPF:使GridViewColumn可见= false?

有谁知道是否有一个隐藏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)

谢谢大家!
干杯

c# wpf listview visibility gridviewcolumn

15
推荐指数
2
解决办法
3万
查看次数

GridViewColumn.CellTemplate中的TextBlock文本换行不起作用

我在使用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)

wpf textblock datatemplate gridviewcolumn word-wrap

14
推荐指数
1
解决办法
1万
查看次数

WPF:GridViewColumn调整大小事件

我使用的是ListViewGridView.有GridViewColumnresize事件吗?

c# wpf listview resize gridviewcolumn

10
推荐指数
2
解决办法
1万
查看次数