mze666
جمعه 28 بهمن 1390, 10:26 صبح
سلام - با این روش شما میتونید مستقیم از Converter ای که درست کردید استفاده کنید و دیگه نیازی به تعریف Converter توی Window.Resources یا جای دیگه نیست.
تو این روش Converter ای رو که تعریف کردید علاوه بر این که اینترفیس IValueConverter رو implement میکنه از MarkupExtension هم باید مشتق بشه. به کد زیر توجه کنید:
[ValueConversion(typeof(DateTime), typeof(String))]
public class DateConverter : MarkupExtension, IValueConverter
{
private static DateConverter _converter = null;
public override object ProvideValue(IServiceProvider serviceProvider)
{
if (_converter == null)
{
_converter = new DateConverter();
}
return _converter;
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
// Your logic
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
یا این کار یک مقدار از Overhead نیز کم میشود و باعث افزایش سرعت میشود (ولی نه به شکل خیلی محسوس!)
بعد از این کار توی کد Xaml دیگه نیازی به تعریف کانورترتون ندارید و میتونید مستقیم ازش استفاده کنید:
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Date, Converter={common:DateConverter}}" />
</DataGrid.Columns>
</DataGrid>
امیدوارم که بدردتون خورده باشه.
تو این روش Converter ای رو که تعریف کردید علاوه بر این که اینترفیس IValueConverter رو implement میکنه از MarkupExtension هم باید مشتق بشه. به کد زیر توجه کنید:
[ValueConversion(typeof(DateTime), typeof(String))]
public class DateConverter : MarkupExtension, IValueConverter
{
private static DateConverter _converter = null;
public override object ProvideValue(IServiceProvider serviceProvider)
{
if (_converter == null)
{
_converter = new DateConverter();
}
return _converter;
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
// Your logic
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
یا این کار یک مقدار از Overhead نیز کم میشود و باعث افزایش سرعت میشود (ولی نه به شکل خیلی محسوس!)
بعد از این کار توی کد Xaml دیگه نیازی به تعریف کانورترتون ندارید و میتونید مستقیم ازش استفاده کنید:
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Date, Converter={common:DateConverter}}" />
</DataGrid.Columns>
</DataGrid>
امیدوارم که بدردتون خورده باشه.