簡體   English   中英

C#WPF DataGrid轉換器

[英]C# WPF DataGrid Converters

我一直在嘗試格式化數據網格中的字段數天。 如何更改Period是訪問的日期字段。 在這次嘗試中我不斷收到錯誤:

. 然而,我正在使用的示例顯示

我只是想根據日期更改列以列出我想要的內容。 但無法獲得任何1個示例/方法。

XAML

<Window Name="MainForm" x:Class="Yabba.MainWindow"
    xmlns:local="clr-namespace:Yabba"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="655.217" Width="887.851" Loaded="Window_Loaded">
<Window.Resources>
    <local:DateConverter x:Key="dateConverter"/>
</Window.Resources>
<Grid>
    <DataGrid Name="dataGrid1"  AutoGenerateColumns="False" PreviewKeyDown="dataGrid1_KeyDown" CanUserAddRows="false" SelectionUnit="FullRow" IsReadOnly="True" SelectionMode="Single" HorizontalAlignment="Left" VerticalAlignment="Top" Height="348" Width="753" SelectionChanged="dataGrid1_SelectionChanged" Margin="0,20,0,0" MouseDoubleClick="dataGrid1_MouseDoubleClick">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Question" Binding="{Binding title}"></DataGridTextColumn>
            <DataGridTextColumn Header="Period" Binding="{Binding started, Converter={local:DateConverter}}"></DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>
</Grid>

namespace Yabba {
/// <summary>
[ValueConversion(typeof(DateTime), typeof(String))]
public class DateConverter : IValueConverter {
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
        DateTime date = (DateTime)value;
        return date.ToShortDateString();
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
        string strValue = value as string;
        DateTime resultDateTime;
        if (DateTime.TryParse(strValue, out resultDateTime)) {
            return resultDateTime;
        }
        return DependencyProperty.UnsetValue;
    }
}

我在這做錯了什么?

為使用此示例的任何人添加了備注:(無關聯,請查看所選答案的答案)

您可能需要根據需要更改類型。

[ValueConversion(typeof(DateTime), typeof(String))]

我不得不改變我的

[ValueConversion(typeof(String), typeof(String))]

然后重鑄到DateTime

DateTime date = DateTime.Parse((string)value);

Converter={local:DateConverter}}

是錯的。 請改用:

Converter={StaticResource dateConverter}}

注意小寫“d”。 資源名稱區分大小寫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM