2013-03-29 2 views
7

मैं अब दिनों के लिए डेटाग्रिड में फ़ील्ड को प्रारूपित करने का प्रयास कर रहा हूं। मैं बस अवधि को कैसे बदल सकता हूं, पहुंच से एक दिनांक फ़ील्ड है। इस प्रयास में मुझे त्रुटि मिल रही है:सी # डब्ल्यूपीएफ डाटाग्रिड कन्वर्टर्स

'{local: DateConverter}' मान मान्य मार्कअप एक्सटेंशन अभिव्यक्ति नहीं है। नामस्थान 'clr-namespace: yabba' में 'डेट कनवर्टर' को हल नहीं कर सकता। 'डेट कनवर्टर' मार्कअप एक्सटेंशन का उप-वर्ग होना चाहिए।

हालांकि उदाहरण मैं सभी शो डेट कनवर्टर से काम कर रहा था: 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 date = DateTime.Parse((string)value); 

उत्तर

5
को फिर से पात्र चयन

Converter={local:DateConverter}}

गलत है करने के लिए मेरा बदलना पड़ा। लोअरकेस "डी" के लिए

Converter={StaticResource dateConverter}}

वेतन ध्यान: के बजाय इसका प्रयोग करें। संसाधन नाम केस-संवेदी हैं।

+0

आपको बहुत बहुत धन्यवाद। जिन उदाहरणों को मैं देख रहा था, वही पूंजीगत मुद्दा था जो मैं * <स्थानीय: डेटकॉन्टर x: कुंजी = "डेट कनवर्टर" /> * से संबंधित था, मानते हुए कि यह दिखाया गया था कि यह पहले भाग का संदर्भ दे रहा था। बहुत धन्यवाद, विफलता के 2 दिन पहले से ही इसे काम करने की कोशिश कर रहे हैं। – Matty

संबंधित मुद्दे