Próbuję sformatować pola w datagrid na kilka dni. Jak mogę po prostu zmienić Okres jest polem daty z dostępu. Podczas tej próby nadal pojawia się błąd:C# Konwertery WPF DataGrid
Wartość "{local: DateConverter}" nie jest prawidłowym wyrażeniem MarkupExtension. Nie można rozwiązać "DateConverter" w przestrzeni nazw "clr-namespace: Yabba". "DateConverter" musi być podklasą MarkupExtension.
Jednak przykłady, z których pracowałem ze wszystkich pokazów DateConverter: IValueConverter.
Po prostu chcę tylko zmienić kolumnę, aby wyświetlić listę, co chcę na podstawie daty. Ale nie można uzyskać żadnego 1 przykładu/metody do pracy.
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>
kod
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;
}
}
Co robię źle tutaj?
Dodane zauważa każdemu stosując to jako przykład: (niepowiązany na pytanie, widok wybrana odpowiedź na odpowiedź)
Być może trzeba zmienić typy zależności.
[ValueConversion(typeof(DateTime), typeof(String))]
musiałem zmienić kopalni
[ValueConversion(typeof(String), typeof(String))]
Następnie przekształcenie do DateTime
DateTime date = DateTime.Parse((string)value);
Dziękuję bardzo. Przykłady, na które patrzyłem, miały ten sam problem kapitałowy, który dotyczyłem * * wierząc, że odwoływał się do pierwszej części, tak jak pokazano. Dziękuję bardzo, 2 dni porażki już próbują to zrobić. –
Matty