Редактирование элемента RadListBox

Интересует вопрос, можно ли на WPF, как на Winforms, запустить редактирование имени элемента (например ListBox) и после изменения в UI прокинуть новое значение в свойство объекта.

<telerik:RadListBox x:Name="EmpList" Grid.Row="1" MinWidth="100" MinHeight="50" SelectionMode="Single"
                                ItemsSource="{Binding ElectricityMeteringPoints}"
                                DisplayMemberPath="Name"
                                SelectedItem="{Binding SelectedEMP, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
            </telerik:RadListBox>

Ответы (1 шт):

Автор решения: FiNom

Немного почитал про xaml, остановился на таком варианте. Критика приветствуется :)

UI:

    <telerik:RadListBox Grid.Row="1" 
                        BorderThickness="0"
                        SelectionMode="Single"
                        ItemsSource="{Binding ElectricityMeteringPoints}"
                        SelectedItem="{Binding SelectedEMP, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
         <telerik:RadListBox.ItemTemplate>
             <DataTemplate>
                 <Grid>
                     <TextBlock Text="{Binding Name}"
                                Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type telerik:RadListBoxItem}}, Path=IsSelected, Converter={StaticResource BoolToVisibleControl},ConverterParameter=True}"/>
                     <TextBox Text="{Binding Name}"
                              BorderThickness="0"
                              Background="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type telerik:RadListBoxItem}}, Path=Background}"
                              Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type telerik:RadListBoxItem}}, Path=IsSelected, Converter={StaticResource BoolToVisibleControl},ConverterParameter=False}"/>
                 </Grid>
             </DataTemplate>
         </telerik:RadListBox.ItemTemplate>
    </telerik:RadListBox>

конвертер:

public class BoolToVisibleControl : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var isVisible = (bool?) value ?? false;
        if (parameter != null && parameter.ToString() == "True")
            isVisible = !isVisible;

        return isVisible ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return new NotImplementedException();
    }
}
→ Ссылка