gpt4 book ai didi

C# WPF 数据网格转换器

转载 作者:太空狗 更新时间:2023-10-29 17:50:50 29 4
gpt4 key购买 nike

几天来我一直在尝试格式化数据网格中的字段。我怎样才能简单地更改 Period is a date field from access。在这次尝试中,我不断收到错误:

“{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);

最佳答案

Converter={local:DateConverter}}

错了。改用这个:

Converter={StaticResource dateConverter}}

注意小写的“d”。资源名称区分大小写。

关于C# WPF 数据网格转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15696752/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com