2015-01-11 3 views
0

В моем приложении я пытаюсь изменить свойство кнопки внутри селектора длинного списка, находящегося внутри элемента сворачивания. Я попробовал использовать «x: Name», чтобы назвать кнопку, которую я мог бы использовать в обработчике событий, но возникла ошибка «Имя не существует в текущем контексте». Я использовал тот же метод для изменения свойств селектора длинного списка, и он работал нормально.Изменение свойств элементов управления в селекторе longlist

Вот мой XAML код:

<phone:PivotItem x:Name="settingPivotItem"> 
     <phone:LongListSelector x:Name="longList3" 
           ItemsSource="{Binding extra.Items}" 
           SelectionChanged="longList3_SelectionChanged"> 
      <phone:LongListSelector.ItemTemplate> 
       <DataTemplate> 
        <Button x:Name="settingButton"> 
         <Button.Template> 
          <ControlTemplate> 
           <StackPanel> 
            <TextBlock Text="{Binding item}"/> 
           </StackPanel> 
          </ControlTemplate> 
         </Button.Template> 
        </Button> 
       </DataTemplate> 
      </phone:LongListSelector.ItemTemplate> 
     </phone:LongListSelector> 
</phone:PivotItem> 

Пожалуйста, помогите

+0

Используйте VisualTreeHelper для извлечения элементов пользовательского интерфейса из DataTemplate. Вот пример: http://stackoverflow.com/questions/26236707/access-xaml-control-inside-ith-item-in-flipview/26237483#26237483 – Fred

+0

Я пробовал решение в приведенной выше ссылке, но я не могу найти альтернативу ContainerFromItem для LongListSelector, поскольку LongListSelector ее не имеет. – Sukumar

ответ

0

кнопку, которую вы пытаетесь получить к нему доступ в дата-шаблоне и, следовательно, в другом контексте.

Вы не можете получить к нему доступ по адресу x: Имя вне шаблона, потому что может быть несколько элементов с этим шаблоном (так что может быть несколько кнопок с этим именем).

Если вам действительно нужно изменить его свойства из кода, вы можете использовать VisualTreeHelper, как утверждал als Fred.

Другой вариант был бы для нас привязкой данных.

+0

Я пробовал использовать привязку данных, но когда я задал контекст данных кнопки, список не заполняется, вероятно, потому, что я использую источник элемента в LongListSelector и привязываю его к TextBlock. – Sukumar

+0

Извините, но я не могу понять, есть ли этот комментарий. Где именно вы хотите изменить свойства кнопки? –

+0

Ну, в моем приложении, когда я прокручиваю среди элементов поворота, я хочу, чтобы выравнивание элементов (внутри LongListSelector) в этом конкретном элементе поворота изменялось в зависимости от того, где я прокручиваю (влево или вправо). Я смог изменить горизонтальное выравнивание LongListSelector, но чтобы текст полностью совпал с другой стороной, мне также нужно изменить горизонтальное выравнивание кнопки. Теперь у меня есть условие от того, где элемент поворота был перемещен (слева или справа), все, что мне нужно, - это способ доступа к этой кнопке внутри этого условия. – Sukumar

Смежные вопросы