标签: wpfdatagrid

WPF Datagrid RowDetailsTemplate绑定到属性的可见性

我正在使用带有RowDetails面板的WPF Datagrid,其中RowDetailsVisibilityMode设置为"VisibleWhenSelected",SelectionMode ="Extended",以便可以选择多行,从而显示RowDetails,如下所示:

<dg:DataGrid x:Name="MyGrid"
             ItemsSource="{Binding Path=MyItems}"
             AutoGenerateColumns="True"
             SelectionMode="Extended"
             RowDetailsVisibilityMode="VisibleWhenSelected">

  <dg:DataGrid.RowDetailsTemplate>
    <DataTemplate>
      <TextBlock Text="Further Details..."/>
    </DataTemplate>
  </dg:DataGrid.RowDetailsTemplate>
  ...
</dg:DataGrid>
Run Code Online (Sandbox Code Playgroud)

遗憾的是,对于此应用程序,在"选定"行上显示行详细信息并不直观,客户端希望单击多个行上的复选框以显示RowDetails窗格,还可以在网格中滚动选择其他行.换句话说,无论DataGrid上发生什么,都要修复显示RowDetails的行.

因此,目前滚动关闭他们已打开的RowDetailsPanes.我想要做的是在其中一个列中有一个复选框,并将RowDetails面板可见性绑定到此属性,但我无法弄清楚如何执行此操作.问题只是RowDetailsPane只对数据网格中的行选择进行操作 - 是否可以以某种方式扩展以对我选择的属性进行操作?

先谢谢,威尔

.net c# wpf datagrid wpfdatagrid

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

WPF DataGrid隐藏RowDetails或取消选择Row

我有一个DataGrid,其RowDetails设置为在选中时显示(RowDetailsVisibilityMode ="VisibleWhenSelected").现在我希望能够摆脱它!我用这段代码在行细节上放了一个关闭按钮:

private void Button_Click(object sender, RoutedEventArgs e)
  {
   e.Handled = true;
   Button button = sender as Button;
   DataGridRow row = button.FindAncestor<DataGridRow>();

   row.DetailsVisibility = Visibility.Collapsed;
  }
Run Code Online (Sandbox Code Playgroud)

该代码在那里得到了90%,但是一旦给定行的行细节折叠,下次选择该行时就不会出现.

wpf wpfdatagrid

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

有条不紊地向WPF DataGridCell发送只读

我有一种情况需要有条件地对wpf datagrid单元格进行readonly.DataGridCell中有IsReadOnly属性.但不幸的是,该财产是只读!有什么办法吗?
蚂蚁.

wpf datagrid wpfdatagrid

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

将WPF DataGridComboBoxColumn与MVVM结合使用 - 绑定到ViewModel中的属性

我正在使用优秀的MVVM Light Toolkit.我的ViewModel公开了:

public const string CourtCodesTypeCourtPropertyName = "CourtCodesTypeCourt";
private List<CourtType> _courtCodesTypes = new List<CourtType>();
public List<CourtType> CourtCodesTypeCourt
{
    get
    {
        return _courtCodesTypes;
    }

    set
    {
        if (_courtCodesTypes == value)
        {
            return;
        }

        var oldValue = _courtCodesTypes;
        _courtCodesTypes = value;

        // Update bindings and broadcast change using GalaSoft.MvvmLight.Messenging
        RaisePropertyChanged(CourtCodesTypeCourtPropertyName, oldValue, value, true);
    }
}

public const string CourtCodesPropertyName = "CourtCodes";
private List<Court> _courtCodes = null;
public List<Court> CourtCodes
{
    get
    {
        return _courtCodes;
    }

    set
    {
        if (_courtCodes == value) …
Run Code Online (Sandbox Code Playgroud)

wpf mvvm wpfdatagrid mvvm-light

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

用于DataGridRow的WPF样式触发器由AlternatingRowBackground Brush强制执行的背景颜色

我有一个WPF DataGrid,它有一个AlternatingRowBackground画笔.它被配置为每隔一行着色.我想在鼠标上做一些突出当前行的事情.但是,样式触发器似乎输给了AlternatingRowBackground画笔.我在鼠标上获得了所需的行颜色...但仅限于未使用AlternatingRowBackground画笔绘制的行.

这是Windows中的Style.Resources:

<Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Skins/MainSkin.xaml" />
            </ResourceDictionary.MergedDictionaries>
            <Style TargetType="{x:Type DataGridRow}">
                <Style.Triggers>
                    <Trigger Property="IsMouseOver"
                             Value="True">
                        <Setter Property="Background"
                                Value="Red" />
                        <Setter Property="FontWeight"
                                Value="ExtraBold" />
                        <Setter Property="Height"
                                Value="20" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </ResourceDictionary>
    </Window.Resources>
Run Code Online (Sandbox Code Playgroud)

这是DataGrid:

    <DataGrid Margin="25,15,25,0"
              VerticalAlignment="Top"
              ItemsSource="{Binding DocumentTypeList}"
              AutoGenerateColumns="False"
              Height="500"
              AlternationCount="2"
              FrozenColumnCount="2"
              AlternatingRowBackground="{DynamicResource AlternatingRow}">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Abbreviation}"
                                Header="Abbreviation" />
            <DataGridTextColumn Binding="{Binding Title}"
                                Header="Title" />

            <DataGridTextColumn Binding="{Binding Fee}"
                                Header="Fee" />
            <DataGridTextColumn Binding="{Binding SpecialInstructions}"
                                Header="Special Instructions" />
        </DataGrid.Columns>
    </DataGrid>
Run Code Online (Sandbox Code Playgroud)

有没有办法宣布绝对赢家?这个问题是一个层次结构吗?在我看来,AlternatingRowBackground画笔胜出,因为它直接与声明的最具体部分相关联.

更新: 根据@ Val的指导,这是正确的语法:

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Skins/MainSkin.xaml" /> …
Run Code Online (Sandbox Code Playgroud)

wpf wpfdatagrid

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

wpf删除datagrid左边填充

有人可以说明如何摆脱左边神秘的填充物吗?我尝试了很多属性但似乎没有影响.

在左边填充

wpf wpf-controls wpfdatagrid

11
推荐指数
1
解决办法
6656
查看次数

如何将DataGrid单元格值复制到剪贴板

我有一个DataGrid.但我想在CopyingRowClipboardContent事件中获得专注的细胞价值.但是e.ClipboardRowContent因为它返回了所有选定的单元格值SelectionUnit.我不能改变datagrid的选择单位.为了解决这个问题,我需要获得有针对性的细胞柱数.然后我将从中删除所有列值clipboarcContent.如何在CopyingRowClipboardContent事件中获得专注的细胞?

c# wpf wpfdatagrid

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

如何在wpf c#中禁用数据网格内的滚动

我已经完成了VerticalScrollBarVisibility ="已禁用",因为我不希望查看数据网格内的内容超过指定的高度.在给出上述声明后,我无法看到滚动条.但我仍然可以向下滚动并查看行.有人告诉我如何禁用所有滚动?谢谢

wpf datagrid wpfdatagrid

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

WPF DataGrid行标题可见性错误

我使用DataGrid显示多个字段,其中一个是多行描述.网格显示数据就好了,直到我尝试通过设置隐藏标题行HeadersVisibility="Column".标题行消失但是当我滚动时,行标题会重新出现一些随机行.

我已将其缩小到显示多行描述的列.只要我离开这一栏,我就没有这个问题.我试过用两者分开线"\r\n","\n"但都没有工作.DataGrid是否支持多行文本字段?

下面是一张图片,显示了正在发生的事情以及我用来创建网格的XAML.

DataGrid行标题错误图像

<DataGrid DataContext="{StaticResource personRepository}"
          ItemsSource="{Binding PersonList, Mode=OneWay}"
          AutoGenerateColumns="False"
          HeadersVisibility="Column"
          CanUserSortColumns="False"
          SelectionMode="Extended"
          IsReadOnly="True">

    <DataGrid.Columns>
        <DataGridTextColumn Header="Id" Width="80" Binding="{Binding Id, Mode=OneWay}" />
        <DataGridTextColumn Header="First Name" Width="150" Binding="{Binding FirstName, Mode=OneWay}" />
        <DataGridTextColumn Header="Last Name" Width="150" Binding="{Binding LastName, Mode=OneWay}" />
        <DataGridTextColumn Header="Description" Width="*" Binding="{Binding Description, Mode=OneWay}" />
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

.net c# wpf xaml wpfdatagrid

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

WPF数据网格绑定与自定义列

目前我正在研究WPF应用程序(使用MVVM),我在其中显示数据DataGridView.

<DataGrid RowHeaderWidth="0" ItemsSource="{Binding PartsList,UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Item Name" IsReadOnly="True" Width="*" Binding="{Binding ProductName}"></DataGridTextColumn>
        <DataGridTextColumn Header="Model Name" IsReadOnly="True" Width="*" Binding="{Binding CarModelName}"></DataGridTextColumn>
        <DataGridTextColumn Header="Company Name" IsReadOnly="True" Width="*" Binding="{Binding CompanName}"></DataGridTextColumn>
        <DataGridTextColumn Header="Price" IsReadOnly="True" Width="*" Binding="{Binding Rate}">
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

这里PartsList是ObservableCollection实体Part的一个.

现在我想添加自定义列到DataGrid显示折扣和另一列显示净金额.我怎样才能做到这一点?

请提出一个好主意,因为我需要处理成千上万的记录,因此性能对我来说非常重要.

先感谢您.

.net c# wpf mvvm wpfdatagrid

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

标签 统计

wpf ×10

wpfdatagrid ×10

c# ×4

.net ×3

datagrid ×3

mvvm ×2

mvvm-light ×1

wpf-controls ×1

xaml ×1