WPF - сделать выбранный столбец списка редактируемым при нажатии кнопки - PullRequest
0 голосов
/ 29 апреля 2010

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

1 Ответ

0 голосов
/ 29 апреля 2010

Обновили ли вы содержимое таблицы после внесения изменений? Вы можете использовать метод Grid.GetColumn и отправить объект-отправитель, т. Е. Кнопку редактирования (которую я предполагаю, что она будет отдельной для каждого столбца), а затем, вероятно, использовать VisualTreeHelper для получения текстового поля и комбинированного списка в этом столбце.

Надеюсь, это поможет.

Кроме того, почему вы не используете свойство IsReadOnly TextBox вместо замены TextBlock? Сделайте это истинным или ложным согласно вашему требованию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...