代码之家  ›  专栏  ›  技术社区  ›  Jared Harley

以编程方式在加载时替换GridView单元格内容

  •  2
  • Jared Harley  · 技术社区  · 17 年前

    在我的数据库中,“出生日期”不是必填字段。因此,任何没有dob的记录的值都设置为 DateTime.MinValue 不显示或替换每个 MinValue 具有 ""

    我的想法是要么使用日期所在的文本块的“Loaded”事件并替换“01/01/0001”的每个实例,要么在将数据集发送到GridView之前循环数据集并在其中删除/替换它们。我也不知道该怎么做。

    我的GridView的xaml代码是:

    <Grid>
        <ListView x:Name="resultsListView" GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler" Margin="0,54,0,28" ItemsSource="{Binding Path=Table}">
        <ListView.View>
        <GridView>
            <GridViewColumn DisplayMemberBinding="{Binding Path=LastName}"
                Header="Last Name" 
                Width="150"/>
            <GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}" 
                Header="First Name"
                Width="100"/>
            <GridViewColumn DisplayMemberBinding="{Binding Path=MiddleName}" 
                Header="Middle Name"
                Width="100"/>
            <GridViewColumn Header="Date of Birth" Width="100">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock TextAlignment="Justify" Text="{Binding Path=DateOfBirth, StringFormat='{}{0:MM/dd/yyyy}'}" Loaded="TextBlock_Loaded" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
        </ListView.View>
        </ListView>
    </Grid>
    

    数据集的代码:

    private void FillListView(DataSet ds)
    {
        if (resultsListView.Items.Count != 0)
        {
            resultsListView.Items.Clear();
        }
        resultsListView.DataContext = ds.Tables[0].DefaultView;
    }
    

    DateTime.MinValue 在我看来,我将不胜感激!

    1 回复  |  直到 17 年前
        1
  •  2
  •   Drew Noakes    17 年前

    我会做出一个决定 IValueConverter

    在您的资源中:

    <local:DateTimeConverter x:Key="DateTimeConverter" />
    

    <TextBlock Text="{Binding Path=DateOfBirth, 
                              Converter={StaticResource DateTimeConverter},
                              ConverterParameter='MM/dd/yyyy'}" />
    

    然后定义类:

    public class DateTimeConverter : IValueConverter
    

    Convert (除非您计划使用双向绑定)。在这个方法中,您可以通过参数获取格式字符串(正如我在上面的绑定表达式中传递的那样),并检查 DateTime.MinValue 并返回一个空白字符串。