如何根据单元格值更改wpf Databound网格单元格?

罗密尔·埃文斯(Romel Evans)

我对WPF相对较新,并且正在尝试更改绑定值为十进制零的某些网格单元格。目的是将单元格为0的单元格留空。例如,如果TranDeposit列为零,我想将其更改为空白。在ASP.NET中,这可以通过使用DataBound事件来实现。XAML代码如下:

<DataGrid x:Name="transactionsDataGrid" Grid.Row="3" AutoGenerateColumns="False" EnableRowVirtualization="True"
                    ItemsSource="{Binding}" RowDetailsVisibilityMode="VisibleWhenSelected" RowHeaderWidth="0" Padding="10,0,0,0"
                    AlternatingRowBackground="#FF888888" GridLinesVisibility="Horizontal" SelectionUnit="FullRow" RowBackground="#FFCCCCCC" VerticalAlignment="Top" SelectedIndex="0"
                    HeadersVisibility="Column" Background="#FF292929" Height="355" SelectionChanged="TransactionsDataGrid_SelectionChanged" CanUserAddRows="false" Margin="5,0,5,0"
                           Loaded="DataGrid_RowLoaded">

                        <DataGrid.Columns>
                            <DataGridTextColumn x:Name="tranDateColumn" Binding="{Binding TranDate, StringFormat=MM/dd/yyyy}" Header="Date" Width="90" IsReadOnly="True"/>
                            <DataGridTextColumn x:Name="tranDescriptionColumn" Binding="{Binding TranDescription}" Header="Description" Width="*" IsReadOnly="True"/>
                            <DataGridTextColumn x:Name="tranCategoryColumn" Binding="{Binding TranCategory}" Header="Category" Width="340" IsReadOnly="True">
                                <DataGridTextColumn.ElementStyle>
                                    <Style TargetType="TextBlock">
                                        <!--<Setter Property="HorizontalAlignment" Value="Right" />-->
                                        <Setter Property="ToolTip" Value="{Binding Path=TranCategory}"/>
                                    </Style>
                                </DataGridTextColumn.ElementStyle>
                            </DataGridTextColumn>
                            <DataGridTextColumn x:Name="tranNotesColumn" Binding="{Binding TranNotes}" Header="Notes" Width="120" IsReadOnly="True"/>
                            <DataGridCheckBoxColumn x:Name="tranTaxColumn" Binding="{Binding TranTax}" Header="Tax" Width="SizeToHeader" IsReadOnly="True"/>
                            <DataGridCheckBoxColumn x:Name="tranClearedColumn" Binding="{Binding TranCleared}" Header="Cleared" Width="SizeToHeader" IsReadOnly="True" />
                            <DataGridTextColumn x:Name="tranDepositColumn" Binding="{Binding TranDeposit}" Header="Deposit" Width="80" IsReadOnly="True"/>
                            <DataGridTextColumn x:Name="tranWithdrawlColumn" Binding="{Binding TranWithdrawl}" Header="Withdrawal" Width="80" IsReadOnly="True" />
                            <DataGridTextColumn x:Name="tranBalanceColumn" Binding="{Binding TranBalance}" Header="Balance" Width="80" IsReadOnly="True"/>
                        </DataGrid.Columns>
                    </DataGrid>

如您所见,我尝试使用Loaded事件访问该行,但是,没有可用于此事件动态更改的行。我已经尝试了LoadingRow事件,但是,当尝试使用非常流行的数据网格帮助程序扩展“ DataGridHelper”时,我在行的GetCell方法中得到了NullReferenceException:

presenter = GetVisualChild<DataGridCellsPresenter>(row);

行值是正确的,但演示者值是null。

public static DataGridCell GetCell(this DataGrid grid, DataGridRow row, int column)
    {
        if (row != null)
        {
            DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(row);
            if (presenter == null)
            {
                grid.ScrollIntoView(row, grid.Columns[column]);
                presenter = GetVisualChild<DataGridCellsPresenter>(row);
            }

            DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column);
            return cell;
        }
        return null;
    }

目前还不确定要去哪里,并在网上搜索了答案。我真的很感谢您的帮助

拉格泰姆·威利

使用值转换器,类似于以下内容:

public class ZeroToBlank: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is int && (int)value == 0)
            return string.Empty;

        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (string.IsNullOrEmpty(value))
            return 0;

        return value;
    } 
}

您需要在XAML中添加对名称空间的引用:

xmlns:converters="YourNamespace.Converters"

然后添加为资源:

<UserControl.Resources>
    <converters:ZeroToBlankConverter x:Key="ZeroToBlankConverter" />
</UserControl.Resources>

最后是绑定:

Binding="{Binding TranDeposit, Converter={StaticResource ZeroToBlankConverter}}"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

extjs根据值更改网格单元格背景

来自分类Dev

extjs根据值更改网格单元格背景

来自分类Dev

WPF DataGrid的结构-根据值更改单元格

来自分类Dev

如何根据单元格值更改DataGrid单元格背景色

来自分类Dev

如何根据单元格值更改php中的单元格表颜色?

来自分类Dev

React:如何根据React表中的单元格值更改表单元格背景

来自分类Dev

如何根据单元格值更改php中的单元格表颜色?

来自分类Dev

数据表...如何根据表的单元格值更改单元格的颜色

来自分类Dev

如何通过VBA根据其他单元格值更改单元格的背景颜色

来自分类Dev

ag在单元格值更改上更改网格颜色

来自分类Dev

根据该单元格和另一个单元格的值更改单元格的格式

来自分类Dev

如何在Excel中制作一个单元格以根据其他单元格的值更改颜色?

来自分类Dev

VBA-根据特定单元格的值更改单元格的颜色

来自分类Dev

excel宏:根据原始单元格值更改单元格值

来自分类Dev

根据所有子单元格的值更改父单元格的值

来自分类Dev

根据不同列中的值更改单元格背景

来自分类Dev

根据单元格值更改字体和颜色大小

来自分类Dev

根据值更改单元格颜色-VueJs和Vuetify

来自分类Dev

SSRS根据SUM值更改单元格颜色

来自分类Dev

根据单元格值更改饼图上颜色的颜色

来自分类Dev

根据单元格值更改行背景颜色

来自分类Dev

根据值更快地更改单元格颜色

来自分类Dev

根据颜色常量的单元格值更改内部颜色

来自分类Dev

根据ajax拉入的值更改html单元格边框

来自分类Dev

根据表格单元格值更改行的颜色

来自分类Dev

根据单元格值更改图表颜色

来自分类Dev

尝试根据多单元格值更改数据网格中行的背景颜色

来自分类Dev

WPF DataGrid单元格值更改事件

来自分类Dev

WPF-根据CheckBox值更改DataGridTemplateColumn单元格背景

Related 相关文章

  1. 1

    extjs根据值更改网格单元格背景

  2. 2

    extjs根据值更改网格单元格背景

  3. 3

    WPF DataGrid的结构-根据值更改单元格

  4. 4

    如何根据单元格值更改DataGrid单元格背景色

  5. 5

    如何根据单元格值更改php中的单元格表颜色?

  6. 6

    React:如何根据React表中的单元格值更改表单元格背景

  7. 7

    如何根据单元格值更改php中的单元格表颜色?

  8. 8

    数据表...如何根据表的单元格值更改单元格的颜色

  9. 9

    如何通过VBA根据其他单元格值更改单元格的背景颜色

  10. 10

    ag在单元格值更改上更改网格颜色

  11. 11

    根据该单元格和另一个单元格的值更改单元格的格式

  12. 12

    如何在Excel中制作一个单元格以根据其他单元格的值更改颜色?

  13. 13

    VBA-根据特定单元格的值更改单元格的颜色

  14. 14

    excel宏:根据原始单元格值更改单元格值

  15. 15

    根据所有子单元格的值更改父单元格的值

  16. 16

    根据不同列中的值更改单元格背景

  17. 17

    根据单元格值更改字体和颜色大小

  18. 18

    根据值更改单元格颜色-VueJs和Vuetify

  19. 19

    SSRS根据SUM值更改单元格颜色

  20. 20

    根据单元格值更改饼图上颜色的颜色

  21. 21

    根据单元格值更改行背景颜色

  22. 22

    根据值更快地更改单元格颜色

  23. 23

    根据颜色常量的单元格值更改内部颜色

  24. 24

    根据ajax拉入的值更改html单元格边框

  25. 25

    根据表格单元格值更改行的颜色

  26. 26

    根据单元格值更改图表颜色

  27. 27

    尝试根据多单元格值更改数据网格中行的背景颜色

  28. 28

    WPF DataGrid单元格值更改事件

  29. 29

    WPF-根据CheckBox值更改DataGridTemplateColumn单元格背景

热门标签

归档