1

SQLテーブルのエントリが09:00:00の場合、セルは09:00:00のように表示されるか、次のような文字列形式でスローされます。

    <DataGridTextColumn Binding="{Binding Path=tin, StringFormat=\{0:hh\\:mm\}}"  Header="Time In:"/>

9:00になります。「09:00AM」のような短い時間文字列用にフォーマットするにはどうすればよいですか?

StringFormat = tを使用してみましたが、セルが空白になります。「t」を使用すると、セルは空白になります。私は本当にここでピクルスになっています。

DataGridには、displayGridという名前のデータセットが入力されています。entryGridはDataGridオブジェクトです。
entryGrid.ItemsSource = displayGrid.Tables [0] .DefaultView;

ここで私が探しているのは、これを正しくフォーマットするためにXAMLに何を投入するかです。SQL2008テーブルの09:00:00からデータグリッドの09:00AMに移動する必要があります。VS 2012でC#.NetとXAMLを使用しています。コーディングは非常に新しいので、単純な間違いまたは構文エラーであると確信しています。あなたが与えることができるどんな助けにも感謝します。

編集:

私も戻って、セルをフォーマットするために次のコードで列を自動生成しようとしました:

 private void ResultsDataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
        if (e.PropertyType == typeof(DateTime))
        {
            DataGridTextColumn dataGridTextColumn = e.Column as DataGridTextColumn;
            if (dataGridTextColumn.Header.ToString().Equals("wkdate"))
            {
                dataGridTextColumn.Binding.StringFormat = "{0:d}";
            }
            if(dataGridTextColumn.Header.ToString().Equals("tin"))
            {
                dataGridTextColumn.Binding.StringFormat = "{0:t}";

            }
        }
    }

日付では機能しますが、時間では機能しません!これは私をばかげている。前もって感謝します!

4

1 に答える 1

1

フォーマットに従って、既存のXAMLコードを更新し、次のように記述できます。

<DataGridTextColumn Binding="{Binding Path=tin, StringFormat=\{0:hh:mm tt\}}"  Header="Time In:"/>

お役に立てれば

または、以下をお願いします。私は多くのプロジェクトでそれを使用したので、これは機能していると確信しています。

CSファイルコード:

 [ValueConversion(typeof(DateTime), typeof(string))]
    public class StringTime : IValueConverter
    {
        #region IValueConverter Members
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null || value.ToString() == "")
            {
                return "";
            }
            String str = ((DateTime)value).ToString("hh:mm tt");
            return str;
        }
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null || value.ToString() == "")
            {
                return value;
            }
            DateTime dtr = DateTime.MinValue.Date;
            dtr = dtr.AddYears(1899);
            if (value == null)
                return dtr;
            dtr = dtr.AddHours(double.Parse((value.ToString().Substring(0, 2))));
            dtr = dtr.AddMinutes(double.Parse((value.ToString().Substring(3, 2))));
            if(value.ToString().Substring(7, 2) == "PM")
                dtr = dtr.AddHours(12);

            return dtr;
        }
        #endregion
    }

XAMLファイル:

    <Page.Resources>
        <custom:StringTime x:Key="StringTime" />
    </Page.Resources>

DataGrid Column Code:

    <DataGridTextColumn Binding="{Binding Path=tin, Converter={StaticResource StringTime}}"  Header="Time In:"/>

問題があれば教えてください。

于 2012-11-20T13:01:33.957 に答える