Listbox с возможностью редактирования (через смену TextBlock на TextBox)
Нужен ListBox
с возможностью редактирования. Здесь был совет реализовать через DataGrid
, но выглядит не так как хотелось бы.
Разместил на ListBox
друг над другом TextBox
и TextBlock
, по умолчанию виден TextBlock
, по клику мышкой видимость сменяется на TextBox
.
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Grid Width="280" VerticalAlignment="Center">
<TextBox x:Name="tbNameService" Text="{Binding Name}" KeyDown="tbNameService_KeyDown"
Visibility="{Binding IsEditing, Converter={StaticResource VisEditConverter}}"
LostFocus="tbNameService_LostFocus" VerticalAlignment="Center"
Width="270" IsVisibleChanged="tbNameService_IsVisibleChanged"/>
<TextBlock Name="tblNameService" Text="{Binding Name}" MouseDown="tblNameService_MouseDown"
Visibility="{Binding IsBlocking, Converter={StaticResource VisBlockConverter}}"
VerticalAlignment="Center" Width="270" />
</Grid>
<TextBlock Text="{Binding Status}" Foreground="{Binding Color_status}" Width="140"/>
<TextBlock Text="{Binding Naznachenie}" Width="220"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Данные подтягиваются из класс, видимость тоже из этого же класса через конвертер bool-visibility
.
В принципе все работает, но есть одна проблема: как сделать так чтобы менялась видимость по клику вне TextBox
по любой области окна?