Имам listView с презентация на gridview и TextBlocks във всяка колона. Бих искал да направя избрания ред редактируем, като заменя текстовите блокове с TextBoxes и ComboBoxes, когато потребителят щракне върху бутон за редактиране. Опитах се да направя това, като зададох стилове, които превключват видимостта на контролите по следния начин:
<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, така че когато потребителят избере ред, тя/той получава редактируемите контроли на този ред, но наистина искам да разреша това само когато кликне върху бутон.