У меня есть 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, чтобы, когда пользователь выбирает строку, он/она получал редактируемые элементы управления в этой строке, но я действительно хочу разрешить это только тогда, когда они нажимают кнопку.