문제

나는 처음으로 WPF에서 프로그램을 진행하고 있습니다. 바운드 데이터 세트 (데이터베이스에서 가져온)의 데이터를 표시하는 GridView 모드에 ListView가 있습니다.

내 데이터베이스에서 "생년월일"은 필수 필드가 아닙니다. 따라서 DOB가없는 모든 레코드는 값을 설정했습니다. DateTime.MinValue. 이 최소값 날짜 각각에서 날짜는 셀에 01/01/0001로 표시됩니다. 나는 셀을 형식화 할 수있는 방법을 찾으려고 노력하고 있습니다. DateTime.MinValue 각각을 보여 주거나 교체하지 않습니다 MinValue ~와 함께 "".

내 생각은 날짜가있는 텍스트 블록의 "로드 된"이벤트를 사용하고 "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 내 그리드 뷰에서 대단히 감사하겠습니다!

도움이 되었습니까?

해결책

나는 만들 것이다 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 빈 끈을 반환하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top