Как отобразить тип Enum в DataGridTextColumn? - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть Список, и я связываю эти списки с сеткой данных, которая работает нормально, но в этом классе Правил у меня есть один тип enum, который является "Типом", поэтому в таблице данных я получаю столбец Тип как пустой, так как я получаю перечисление в столбце данных, пожалуйста, помогите мне.

Спасибо, @ Nagaraju.

Ответы [ 2 ]

3 голосов
/ 21 ноября 2011

Обычно его следует преобразовывать в реперентацию String напрямую, связывая ... но если нет, вы можете написать конвертер значений

public class EnumConverter : IValueConverter
{
    #region Implementation of IValueConverter
    /// <summary>
    /// Converts a value. 
    /// </summary>
    /// <returns>
    /// A converted value. If the method returns null, the valid null value is used.
    /// </returns>
    /// <param name="value">The value produced by the binding source.
    ///                 </param><param name="targetType">The type of the binding target property.
    ///                 </param><param name="parameter">The converter parameter to use.
    ///                 </param><param name="culture">The culture to use in the converter.
    ///                 </param>
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return ((MyEnum)value).ToString()        }
    /// <summary>
    /// Converts a value. 
    /// </summary>
    /// <returns>
    /// A converted value. If the method returns null, the valid null value is used.
    /// </returns>
    /// <param name="value">The value that is produced by the binding target.
    ///                 </param><param name="targetType">The type to convert to.
    ///                 </param><param name="parameter">The converter parameter to use.
    ///                 </param><param name="culture">The culture to use in the converter.
    ///                 </param>
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return  null;
    }
    #endregion
}
# endregion

Вы можете использовать конвертер следующим образом

<.... Binding="{Binding Path=MyObject,Converter="{StaticResource ResourceKey=enumConverter}}"

<Window.Resources>
    <local:EnumConverter x:Key="enumConverter"/>
</WindowResources>

Я думаю, что вам не хватает .... вам нужно сделать статический ресурс с таким именем

2 голосов
/ 23 ноября 2011

Объявите класс как:

public class EnumConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return ((YourEnumType)value).ToString();
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

использовать конвертер в xaml как ..

<Window.Resources>
    <local:EnumConverter x:Key="enumConverter"/>
</Window.Resources>

Связывание как ..

<... Binding="{Binding Path=Type,Converter={StaticResource enumConverter}}" .../>

Это сработало для меня ..

@nagaraju.

...