Редактирование элемента 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();
}
}