У меня есть listView с представлением gridview и TextBlocks в каждом столбце. Я хотел бы сделать выбранную строку редактируемой, заменив текстовые блоки на текстовые и комбинированные, когда пользователь нажимает кнопку редактирования. Я попытался сделать это, установив стили, которые переключают видимость элементов управления следующим образом:
<Style x:Name="ItemDisplayStyle" TargetType="{x:Type TextBlock}" x:Key="ItemDisplayStyle">
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Visibility" Value="{Binding Path=dislayMode}" />
</Style>
<Style x:Name="ItemEditStyle" TargetType="{x:Type FrameworkElement}" x:Key="ItemEditStyle">
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Visibility" Value="{Binding Path=editMode}" />
</Style>
displayMode и editMode - это свойства видимости, установленные в коде.
И ниже в xaml:
<GridViewColumn Header="Date de début" Width="80">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock Margin="-6,0"
HorizontalAlignment="Stretch" TextAlignment="Center"
Text="{Binding Path=DateDebut, Mode=TwoWay}"
Style="{StaticResource ItemDisplayStyle}" />
<TextBox x:Name="tbDateDebut" Margin="-6,0"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Center"
Text="{Binding Path=DateDebut, Mode=TwoWay}"
Style="{StaticResource ItemEditStyle}" />
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
Моя проблема в том, что изменение 'editMode' и 'displayMode' в коде позади, похоже, не обнаруживается на уровне пользовательского интерфейса.
Кроме того, даже если я заставлю это работать, у меня нет никакого представления о том, как применить это только к выбранной строке.
Я могу сделать это отдельно, связав значение видимости с ListView, так что когда пользователь выбирает строку, он / она получает редактируемые элементы управления в этой строке, но я действительно хочу разрешить это, только когда они нажимают на кнопку.