私は何日もの間、データグリッドのフィールドをフォーマットしようとしています。期間はアクセスからの日付フィールドです。この試みでは、エラーが発生し続けます:
'{local:DateConverter}' 値は有効な MarkupExtension 式ではありません。名前空間「clr-namespace:Yabba」の「DateConverter」を解決できません。「DateConverter」は MarkupExtension のサブクラスである必要があります。
ただし、私が取り組んでいた例はすべてDateConverter : IValueConverterを示しています。
日付に基づいて必要なものをリストするように列を変更したいだけです。しかし、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);