Получить элемент внутри DataTemplate - PullRequest
2 голосов
/ 16 июня 2011

У меня следующий XAML, и мне нужно изменить видимость imageRemoveButton во время выполнения из кода, стоящего за файлом. Как мне получить доступ к этой кнопке?

<ItemsControl x:Name="ImagesItemsControl">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Border BorderBrush="#ffdddddd"
                    BorderThickness="0,0,0,1">
                <Grid Margin="0,2">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="15" />
                        <ColumnDefinition />
                        <ColumnDefinition Width="20" />
                    </Grid.ColumnDefinitions>

                    <Grid Grid.Column="1"
                          VerticalAlignment="Center">
                        <TextBlock Text="{Binding Name}"
                                      TextWrapping="Wrap" />
                    </Grid>
                    <Button Grid.Column="3"
                            Width="20"
                            Height="20"
                            Content="X"
                            Template="{StaticResource ButtonAddTab}"
                            Style="{StaticResource ButtonWizard}"
                            Tag="{Binding}"
                            x:Name="imageRemoveButton"
                            Click="ImageRemoveButton_Click" />
                </Grid>
            </Border>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Ответы [ 3 ]

1 голос
/ 12 июля 2011

Используйте загруженное событие для кнопки, чтобы сохранить ссылку на кнопку в файле cs.Используйте эту ссылку, когда необходимо изменить видимость.

0 голосов
/ 17 июня 2011

Попробуйте использовать Source привязку к классу, который будет управлять состоянием видимости кнопки. Добавление свойства ко всем вашим элементам данных будет проблематичным, но может потребоваться, если видимость кнопки необходимо настроить на основе свойства вашего элемента данных. В соответствии со стандартными шаблонами MVVM вы можете контролировать видимость кнопки из C #. Если вам нужен конкретный экземпляр кнопки, вы можете добавить к нему обработчик событий Loaded и соответствующим образом его кешировать.

0 голосов
/ 16 июня 2011

Вы не можете ссылаться на элементы по имени в шаблоне.Не найдено соответствующего свойства code-behind / designer, сгенерированного шаблонами.

Вы хотите связать видимость элемента управления в шаблоне со свойством ваших элементов данных.Это означает, что вам нужно будет добавить свойство к вашим элементам данных.Можете ли вы предоставить более подробную информацию о ваших элементах данных?Если для свойства задано значение bool, используйте VisibilityConvertor (десять на десятке на этом сайте).

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

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