标签: xamdatagrid

xamDataGrid - 缩进嵌套级别

我有一个xamDataGrid有两个级别的数据.(关于SO的其他问题).

很少有视觉效果可以显示一个级别的数据开始和一个秒开始的位置.看一下xamFeatureBrowser中的这个片段:

在此输入图像描述

我想要的是将第二级缩进一点.RecordPresenter有一个NestedContentMargin属性,但它是只读的......

另一种方法是为每个二级网格显示某种薄页脚.

wpf infragistics xamdatagrid

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

根据属性值应用Style

使用Infragistics XamDataGrid我遇到了一种情况,我只想在设置了某个属性时才应用Style.但是,我认为这更像是一个普通的WPF /样式问题,而不是xamDataGrid特有的.

以下风格是我目前使用的.它将checkBox添加到记录选择器区域:

<Style TargetType="{x:Type igDP:RecordSelector}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type igDP:RecordSelector}">
                <CheckBox x:Name="HeaderCheckBox"
                            HorizontalAlignment="Center"
                            VerticalAlignment="Center"
                            IsChecked="{Binding Path=DataItem.IsChecked}">
                </CheckBox>
                <ControlTemplate.Triggers>
                  <Trigger Property="IsFilterRecord" Value="True">
                    <Setter TargetName="HeaderCheckBox" Property="Visibility" Value="Collapsed"/>
                  </Trigger>
                  <Trigger Property="IsAddRecord" Value="True">
                    <Setter TargetName="HeaderCheckBox" Property="Visibility" Value="Collapsed"/>
                  </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

TargetType是RecordSelector.如果记录是筛选行或添加记录行,我不想显示复选框.

我想改变它,以便如果记录是添加记录行(IsAddRecord == true),那么根本不应用该样式.我希望添加记录行保留其默认样式.

这可能吗?

wpf infragistics xamdatagrid

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

MVVM - 如何在运行时为xamdatagrid创建列?

我必须创建一个XamDataGrid,它显示时间范围x到y的动态数量的列.因此,我不知道用户会选择多少年来预先创建这些列.

现在通常在MVVM中,您只需通过XamDataGrid中需要Columns的多个Properties填充数据,后者只需自动生成它们.

显然我不能在运行时在我的ViewModel中创建属性,除非我用Reflection做了一些疯狂的事情.

我怎么能做到这一点?

我应该只为数据网格创建未绑定的字段并通过代码填充它们吗?我同意在这个阶段我不需要双向绑定,因为网格只是只读...只是大声思考.

这种方法是否可以不违反MVVM模式?谢谢

.net wpf mvvm xamdatagrid

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

使用MVVM,如何将XamDataGrid的SelectedItems作为参数传递给ContextMenu引发的Command?

我正在尝试在XamDataGrid上传递项目,我右键单击鼠标右键以打开ContextMenu,它在我的ViewModel中引发了一个Command.不知何故,Command调用的方法在调试模式下无法访问.

这是从视图中剪断的

<ig:XamDataGrid DataSource="{Binding DrdResults}" Height="700" Width="600">
  <ig:XamDataGrid.ContextMenu>
    <ContextMenu DataContext="{Binding RelativeSource={RelativeSource Mode=Self},
                               Path=PlacementTarget.DataContext}"
                 AllowDrop="True" Name="cmAudit">
      <MenuItem Header="View History" 
                Command="{Binding ViewTradeHistory}"
                CommandParameter="{Binding Path=SelectedItems}">
      </MenuItem>
    </ContextMenu>
  </ig:XamDataGrid.ContextMenu>
  <ig:XamDataGrid.FieldSettings>
    <ig:FieldSettings AllowFixing="NearOrFar"
                      AllowEdit="False" 
                      Width="auto" Height="auto"  />
  </ig:XamDataGrid.FieldSettings>
</ig:XamDataGrid>
Run Code Online (Sandbox Code Playgroud)

此View的相应ViewModel中的代码如下所示.

public WPF.ICommand ViewTradeHistory
{
  get
  {
    if (_viewTradeHistory == null)
    {
      _viewTradeHistory = new DelegateCommand(
      (object SelectedItems) =>
      {
        this.OpenTradeHistory(SelectedItems); 
      });
    }
    return _viewTradeHistory;
  }
}
Run Code Online (Sandbox Code Playgroud)

最后,命令调用的实际方法如下所示

private void OpenTradeHistory(object records)
{
  DataPresenterBase.SelectedItemHolder auditRecords
    = (DataPresenterBase.SelectedItemHolder)records;
  // Do something with the auditRecords now.
}
Run Code Online (Sandbox Code Playgroud)

我不确定我在这里做错了什么.任何帮助将非常感谢. …

c# wpf contextmenu mvvm xamdatagrid

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

真正的MVVM和第三方控件

在True MVVM模型中,我们不希望xaml.cs中有任何代码,我们也不希望viewModel具有视图引用.但是,所有第三方控件都不能为True MVVM提供良好的支持.

在我的情况下,我使用Infragistics xamDatagrid控件,我想将其数据导出到Excel.我可以将数据导出到数据网格的唯一方法是使用以下代码:

xamDataGridExcelExporter.xamDataGridExcelExporter xamDataGridExcelExporter1 =       
   new xamDataGridExcelExporter.xamDataGridExcelExporter();   
xamDataGridExcelExporter1.Export(**this.xamDataGrid1**,   
   @"C:\Excel\ExportFile.xls");
Run Code Online (Sandbox Code Playgroud)

但是,XamDataGridExcelExporter将输入作为this.xamDataGrid.xamDataGrid是View not viewModel的一部分. 那么我们如何才能处理我们需要viewModel中的视图实例的情况.

c# wpf infragistics mvvm xamdatagrid

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

XamDataGrid列位置索引:Field.Index或Field.ActualPosition.Column

让我们假设网格已绑定到数据行并具有多个列.

我发现我可以通过以下方式检索给定的列位置索引:

var fieldsLayout = grid.FieldLayouts[0];
var columnField = fieldsLayout.Fields.Single(f => f.Name == "Column Name");
int columnIndex = ... see below
Run Code Online (Sandbox Code Playgroud)
  • columnField.Index - 如果用户未更改初始列顺序
  • columnField.ActualPosition.Column - 如果用户更改了初始列顺序

问题是如何知道用户是否更改了初始列顺序?

.net c# wpf infragistics xamdatagrid

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

XamDataGrid列visibilty无法使用MVVM

我正在尝试在MVVM架构中实现XamDataGrid列visibilty,它似乎不起作用.

我正在做以下事情:

为未绑定字段添加Visiblility属性 -

<igDP:UnboundField Name="gridCustomerId" 
                   Label="ID" 
                   Binding="{Binding customerid, 
                                     Mode=TwoWay, 
                                     UpdateSourceTrigger=PropertyChanged}" 
                   Visibility="{Binding ShowCustomerIDColumn, 
                                        Mode=TwoWay, 
                                        UpdateSourceTrigger=PropertyChanged}">
Run Code Online (Sandbox Code Playgroud)

在我的视图模型中,添加了一个可见性类型的元素:

//ToShow CustomerID Column
private Visibility showCustomerIDColumn; 
public Visibility ShowCustomerIDColumn 
{
    get
    {
        return showCustomerIDColumn; 
    }

    set
    {
        showCustomerIDColumn=value; 
        InvokePropertyChanged("ShowCustomerIDColumn"); 
    }    
}
Run Code Online (Sandbox Code Playgroud)

然后在命令处理程序中使用以下代码:

if(ShowCustomerIDColumn == Visibility.Hidden) 
    ShowCustomerIDColumn = Visibility.Visible; 
else
    ShowCustomerIDColumn = Visibility.Hidden; 

InvokePropertyChanged("ShowCustomerIDColumn");
Run Code Online (Sandbox Code Playgroud)

有人有解决方案吗?

干杯,安舒曼

wpf visibility mvvm xamdatagrid

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

在离开当前单元格之前,WPF XamDataGrid不会更新

我的应用程序中有几个XamDataGrids,我希望所有这些都在用户更改其中的复选框后立即启用相应的"保存"按钮.这个目前不会发生,直到我离开单元格或按回车等,因为单元格仍处于编辑模式.我知道如何使用我在代码隐藏中找到的帖子来解决这个问题:

private void XamDataGrid_CellChanged(object sender, Infragistics.Windows.DataPresenter.Events.CellChangedEventArgs e)
        {
            e.Cell.Record.SetCellValue(e.Cell.Field, e.Editor.Value, true);
        }
Run Code Online (Sandbox Code Playgroud)

但是,如何在整个应用程序中处理所有网格,而不是将其放在每个网格的代码隐藏中?我正在使用MVVM,如果可能的话,我希望不会有任何代码.如果我必须,我会,但我肯定不希望它在17个不同的网格文件背后的代码中.也许是一种行为?

c# wpf xamdatagrid

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

如何在行双击Infragistics WPF数据网格时执行WPF命令?

我有一个WPF XamDataGrid(我正在使用MVVM模式,下面是xaml),我需要它在用户双击一行时在另一个窗口中显示记录详细信息.我有完成工作的命令,但我不知道如何像按钮一样启动它.我希望能够在用户双击一行时执行该命令,因此我需要将双击行(或其ID)作为参数发送给命令.可能吗?

<igDP:XamDataGrid DataSource="{Binding SomeList}">
            <igDP:XamDataGrid.FieldLayoutSettings>
                <igDP:FieldLayoutSettings AutoGenerateFields="False"/>
            </igDP:XamDataGrid.FieldLayoutSettings>
            <igDP:XamDataGrid.FieldLayouts>
                <igDP:FieldLayout >
                    <igDP:FieldLayout.Fields>
                        <igDP:Field  Name="ObjectId" Label="Id" Width="Auto"/>
                        <igDP:Field  Name="Description" Label="Object Description" Width="Auto"/>
                    </igDP:FieldLayout.Fields>
                </igDP:FieldLayout>
            </igDP:XamDataGrid.FieldLayouts>
        </igDP:XamDataGrid>
Run Code Online (Sandbox Code Playgroud)

xamdatagrid

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

如何在XamDataGrid中实现导致多列记录过滤的搜索?

我试图在XamDataGrid上实现搜索(Ctrl + F)功能.如何以编程方式在网格上调用记录筛选,搜索多列中的内容并仅显示与搜索匹配的列?

wpf infragistics xamdatagrid

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

标签 统计

xamdatagrid ×10

wpf ×9

infragistics ×5

c# ×4

mvvm ×4

.net ×2

contextmenu ×1

visibility ×1