Windows Phone 7 Связывание с событиями внутри шаблонов данных - PullRequest
1 голос
/ 27 марта 2011

У меня есть список, в котором я создаю шаблон элемента с шаблоном данных.Я хочу иметь возможность записывать события для флажков и кнопок в табличке данных, но они, похоже, не запускаются.

Вот мой xaml, и в основном я просто попытался отобразить messagebox.show («работал») в функции события.

<ListBox x:Name="ListBox_Items" Margin="0,91,0,8" Foreground="#FF4BE5DB">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Width="700">
                <CheckBox IsChecked="{Binding needPurchase}" Click="NeedPurchase_Click"  Name="CheckBox_NeedPurchase"/>
                <CheckBox IsChecked="False" Name="InCart"/>
                <StackPanel Orientation="Vertical">
                    <TextBlock Text="{Binding name}"/>
                    <TextBlock Text="{Binding storeLocation}"/>
                </StackPanel>
                <Button HorizontalAlignment="Right" Content="DELETE" Click="Button_Click" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Ответы [ 3 ]

2 голосов
/ 28 марта 2011

Поскольку элементы определены в DataTemplate, они не подключены к выделенному коду для родительского класса.Если вы хотите обрабатывать события для шаблонных элементов, вам следует рассмотреть возможность использования команд вместо них.Если вы не знаете, что такое команды (и, следовательно, вряд ли знаете, что такое MVVM), вам следует проверить объяснение , подобное Джереми Ликнесу .

1 голос
/ 28 марта 2011

Я согласен, что использование команд - лучший подход.

Однако, если вы все еще хотите оценить элементы управления, размещенные внутри ItemTemplate / DataTemplate (и подписаться на некоторые события), то вы можете сделать это с помощью VisualTreeHelper.

0 голосов
/ 27 марта 2011

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

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