标签: datagridcolumn

WPF - DataGrid列,宽度="*",但MinWidth适合内容

使一组DataGrid列具有比例宽度的最佳/正确方法是什么(Width="\*"),但是它们的最小宽度至少是其内容的宽度?目前,如果我使用Width="*",那么列保持完全成比例,但内容如果列太薄,会被裁剪.如果我使用Width="Auto",那么列的大小完全符合它们的内容,但这使它们具有不同的大小.

我想要的实际上是两者的组合,例如Width="\*",MinWidth="Auto"当有额外的宽度时,列将全部空出到相等的宽度,但是当网格变小时,内容永远不会被裁剪.

可悲的是,MinWidth="Auto"不存在,所以我想我需要绑定列的MinWidth属性,但很难弄清楚我将它绑定到什么.

如何告诉WPF "MinWidth="列的最宽内容的宽度?

wpf xaml datagrid width datagridcolumn

32
推荐指数
2
解决办法
5万
查看次数

WPF DataGrid同步列宽度

我有两个WPF工具包DataGrids,我希望当用户调整第一个网格中第一列的大小时,它会调整第二个网格中第一列的大小.我已经尝试DataGridColumn将第二个网格中的宽度绑定到第一个网格中的相应列,但它不起作用.我更喜欢使用所有xaml,但我也可以使用后面的代码.

<tk:DataGrid Width="100" Height="100">
    <tk:DataGrid.Columns>
        <tk:DataGridTextColumn x:Name="Column1" Width="50"/>
    </tk:DataGrid.Columns>
</tk:DataGrid>
<tk:DataGrid Width="100" Height="100">
    <tk:DataGrid.Columns>
        <tk:DataGridTextColumn x:Name="Column1Copy" Width="{Binding Path=ActualWidth, ElementName=Column1}"/>
    </tk:DataGrid.Columns>
</tk:DataGrid>
Run Code Online (Sandbox Code Playgroud)

我也试过绑定Width而不是ActualWidth,但都不起作用.

任何帮助是极大的赞赏.

wpf binding datagrid width datagridcolumn

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

无法设置DataGridColumn的ToolTip

我尝试了以下方法:

<tk:DataGridTextColumn 
    Header="Item" 
    Binding="{Binding Item.Title}" 
    ToolTipService.ToolTip="{Binding Item.Description}" />
Run Code Online (Sandbox Code Playgroud)

我没有看到任何工具提示.

有任何想法吗?甚至实施了吗?

wpf datagrid wpftoolkit wpf-controls datagridcolumn

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

如何从DataGridColumn获取DataGridColumnHeader?

我的代码如下:

 void mainDataContextObj_CutSelectedColumnEvent(string columnId)
    {
        IList<DataGridColumn> columns = dg.Columns;

        for(int i=2; i<dg.Columns.Count; i++)
        {
            DataGridColumnHeader headerObj = dg.Columns[i].Header as DataGridColumnHeader;

             //This always returns headerObj as null!!!

        }
    }
Run Code Online (Sandbox Code Playgroud)

我需要DataGridColumnHeader从专栏.我哪里错了?

wpf datagrid header datagridcolumn

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

WPF Datagrid列宽度为Datagrid ActualWidth的百分比

我花了几个小时看这个没有结果.

我只想拥有一个DataGridX列的列,以保持其相对宽度Grid.

所以,例如:

  • 第1栏:10%
  • 第2栏:10%
  • 第3列:10%

我已经设置了一个附加到DataGrid项目模板的样式.我尝试将宽度绑定到DataGrid自身(通常是循环引用),另一个对象(值进来,但DataGridColumn不更新),使用转换器(转换器获取正确的值,然后设置值的列,但尽管返回的数字不同,但列的宽度永远不会改变).

我已经SizeChanged在DataGrid自身上设置了一个事件并专门设置了列的宽度,DID更改了列的值,但是每个size事件都会导致另一个size事件等...等等...

我自己明白这一点显然太愚蠢了,所以如果有人能给我一个简单的例子,我想象的应该是一件简单的事情,我会非常感激.

所以,为了清楚起见,我正在寻找的是一个DataGridX列的列,它保持固定的DataGrid宽度百分比本身 - 非常像HTML中的任何表本身.

提前致谢.

wpf datagrid width datagridcolumn

7
推荐指数
1
解决办法
4895
查看次数

自动调整DataGridCoulmn/AdvancedDataGridColumn的宽度以适合内容

我希望DataGridColumn或AdvancedDataGridColumn会自动调整其宽度,以便适合其中的内容.

我刚开始弯曲.我想实现HTML表格之类的东西.

渲染的数据是简单的文本.有些行文本较少,在这种情况下我想自动扩展DataGridColumn的宽度.

任何帮助解决这个问题.

提前致谢

apache-flex datagridcolumn

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

无法以编程方式找到DataGridColumn的名称

我在我的数据网格中找到了Columns集合,并希望迭代它以找到某个列Name.但是,我无法弄清楚如何处理列的x:Name属性.这个xaml说明了我的DataGridTextColumn和DataGridTemplateColumn的问题:

<t:DataGrid x:Name="dgEmployees" ItemsSource="{Binding Employees}" 
    AutoGenerateColumns="false" Height="300" >
    <t:DataGrid.Columns>
        <t:DataGridTextColumn x:Name="FirstName" Header="FirstName"
Binding="{Binding FirstName}" />
        <t:DataGridTemplateColumn x:Name="LastName" Header="LastName" >
            <t:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding LastName}" />
                </DataTemplate>
            </t:DataGridTemplateColumn.CellTemplate>
        </t:DataGridTemplateColumn>
    </t:DataGrid.Columns>
</t:DataGrid>
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

    DataGrid dg = this.dgEmployees;
    foreach (var column in dg.Columns) 
    {
        System.Console.WriteLine("name: " + (string)column.GetValue(NameProperty));
    }
Run Code Online (Sandbox Code Playgroud)

在运行时,不存在任何值; column.GetValue不返回任何内容.使用Snoop,我确认DataGridTextColumn或DataGridTemplateColumn上没有Name属性.

我错过了什么?

wpf datagridcolumn wpfdatagrid

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

为什么我不能将DynamicResource与DataGridColumn.CellStyle一起使用

所以,例如我有一些简单模型的MVVM WPF应用程序:

public class MyObject
{
    public string F1 { get; set; }
    public string F2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和创建3行的简单视图模型:

public class MyViewModel
{
    public ObservableCollection<MyObject> Objects { get; set; }

    public MyViewModel()
    {
        Objects = new ObservableCollection<MyObject>
            {
                new MyObject{F1 = "V1",F2 = "B1"},
                new MyObject{F1 = "V2",F2 = "B2"},
                new MyObject{F1 = "V3",F2 = "V3"}
            };
    }
}
Run Code Online (Sandbox Code Playgroud)

在视图中我有一个DataGrid手动定义的列和我设置的每一列CellStyle.两种样式都在Window.Resources块中定义.但对于第一列,我使用StaticResource和第二列DynamicResource

查看XAML:

<Window x:Class="WpfApplication12.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" …
Run Code Online (Sandbox Code Playgroud)

c# wpf datagrid datagridcolumn dynamicresource

5
推荐指数
1
解决办法
1757
查看次数

查找DataGridColumn的根元素

我以LogicalTreeHelper.GetParent()递归方式使用该方法来查找各种其他WPF元素的根元素.几乎所有东西都可以正常工作,但是DataGridColumn失败了DataGridTextColumn.我发现它DataGridColumn不是逻辑树和视觉树的一部分.我可以以某种方式找到DataGrid它属于(然后从网格中获取根)?

阅读MSDN文档我找不到合适的解决方案.谢谢.

我的代码找到逻辑根:

private DependencyObject FindLogicalRoot(DependencyObject obj)
{
  if (obj == null)
     return null;
   else
   {
       var parent = LogicalTreeHelper.GetParent(obj);
       return parent != null ? FindLogicalRoot(parent) : obj;
   }
 }
Run Code Online (Sandbox Code Playgroud)

wpf datagrid datagridcolumn datagridtextcolumn

4
推荐指数
1
解决办法
2848
查看次数

WPF DataGridTextColumn工具提示

有没有办法将工具提示添加到DataGridColumn标头,仍然保留排序功能.下面的代码不起作用(它不显示工具提示)

<toolkit:DataGridTextColumn Header="Test" Width="70" Binding="{Binding TestText}" ToolTipService.ToolTip="{Binding TestText}">
Run Code Online (Sandbox Code Playgroud)

当我使用下面的代码时

<toolkit:DataGridTemplateColumn Header="Test" Width="70">  
              <toolkit:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding TestText}" ToolTip="{Binding TestText}"  />
                        </DataTemplate>
                    </toolkit:DataGridTemplateColumn.CellTemplate>
                </toolkit:DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)

该列失去了排序功能..帮助!

wpf wpf-controls datagridcolumn wpfdatagrid

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