Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу подключить событие Click 
:(
    Опции темы
DenWPF
Дата 20.10.2010, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



если я добавляю в хамл событие Click вылетает ошибка System.NullReferenceException.

Код

    <ListBox DockPanel.Dock="Top" DataContext="{Binding idPerson, Converter={StaticResource ConvertTrainersFromClientsKey}}" ItemsSource="{Binding}" >
     <ListBox.ItemTemplate>
      <DataTemplate>
       <DockPanel>
        <Button Content="{Binding name_trainer}" Tag="{Binding idPersonTrainer}" DockPanel.Dock="Top" Click="Button_Click"/>//this Button_Click
        <DockPanel>
         <TextBlock Text="Окончание заявки: "/>
         <TextBox DockPanel.Dock="Top" Style="{StaticResource TextBoxIsReadOnly}" Text="{Binding date_payment}"/>
        </DockPanel>
       </DockPanel>
      </DataTemplate>
     </ListBox.ItemTemplate>
    </ListBox>


в этом месте Click="Button_Click" - вылетает
в других местах все работает нормально

обработчик

Код

    private void Button_Click(object sender, RoutedEventArgs e)
    {
    }




это полный контрол, в других местах обработчики подключаются и работают

Код

    <ListView DockPanel.Dock="Top" Grid.Row="0" x:Name="datagrid" Loaded="datagrid_Loaded" ItemsSource="{Binding Client}">
     <ListView.ItemTemplate>
         <DataTemplate>
             <DockPanel LastChildFill="False">
                 <Border Margin="10" Width="100" BorderThickness="3" BorderBrush="LightBlue" CornerRadius="2"  >
                     <DockPanel>
                         <Image Source="{Binding photo, Converter={StaticResource ConvertNullImageKey}}"/>
                     </DockPanel>
                 </Border>
                 <DockPanel Margin="10" Width="{Binding BindingGroupName=dockwidth}">
                     <TextBox DockPanel.Dock="Top" Style="{StaticResource TextBoxIsReadOnly}" Text="{Binding name_client}"/>
                     <Label Content="Сопровождающий" DockPanel.Dock="Top"/>
                     <ListBox DockPanel.Dock="Top" x:Name="listbox" DataContext="{Binding idPerson, Converter={StaticResource ConvertTrainersFromClientsKey}}" ItemsSource="{Binding}" >
                         <ListBox.ItemTemplate>
                             <DataTemplate>
                                 <DockPanel>
                                     <Button Content="{Binding name_trainer}" Tag="{Binding idPersonTrainer}" DockPanel.Dock="Top" />
                                     <DockPanel>
                                         <TextBlock Text="Окончание заявки: "/>
                                         <TextBox DockPanel.Dock="Top" Style="{StaticResource TextBoxIsReadOnly}" Text="{Binding date_payment}"/>
                                     </DockPanel>
    
                                 </DockPanel>
                             </DataTemplate>
                         </ListBox.ItemTemplate>
                     </ListBox>
                     <Label DockPanel.Dock="Top" Content="Нету" Visibility="{Binding ElementName=listbox, Converter={StaticResource ConvertTrainersFromClientsVisibilityKey}}"/>
                 </DockPanel>
                 <Grid Margin="10">
                     <Grid.RowDefinitions>
                         <RowDefinition/>
                         <RowDefinition/>
                         <RowDefinition/>
                         <RowDefinition/>
                         <RowDefinition/>
                     </Grid.RowDefinitions>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition/>
                         <ColumnDefinition/>
                     </Grid.ColumnDefinitions>
                     <TextBlock Text="Дата рождения" Grid.Column="0" Grid.Row="0" Margin="5"/>
                     <TextBlock Text="Адрес" Grid.Column="0" Grid.Row="1" Margin="5"/>
                     <TextBlock Text="Телефон" Grid.Column="0" Grid.Row="2" Margin="5"/>
                     <TextBlock Text="Email" Grid.Column="0" Grid.Row="3" Margin="5"/>
                     <TextBlock Text="Партнер" Grid.Column="0" Grid.Row="4" Margin="5"/>
                     <TextBox Text="{Binding date_reg}" Grid.Column="1" Grid.Row="0"  Margin="5"/>
                     <TextBox Text="{Binding address}" Grid.Column="1" Grid.Row="1"  Margin="5"/>
                     <TextBox Text="{Binding phone}" Grid.Column="1" Grid.Row="2"  Margin="5"/>
                     <TextBox Text="{Binding mail}" Grid.Column="1" Grid.Row="3" Margin="5"/>
                     <Button Content="{Binding namePartner}" Click="Button_Click_1" Grid.Column="1" Grid.Row="4" Margin="5"/>
                 </Grid>
                 <DockPanel LastChildFill="False"  Margin="10">
                     <Button Content="Редактировать" DockPanel.Dock="Top" Margin="10" x:Name="p_editStudent" Click="p_editStudent_Click"  VerticalAlignment="Center" />
                     <Button Tag="{Binding idPerson}" Content="Переписка" Margin="10" x:Name="p_allMessages" Click="p_allMessages_Click" DockPanel.Dock="Top" VerticalAlignment="Center" />
                     <Button Content="Написать письмо" Margin="10" x:Name="p_sendMessageForStudent" Click="p_sendMessageForStudent_Click" DockPanel.Dock="Top" VerticalAlignment="Center" />
                 </DockPanel>
             </DockPanel>
         </DataTemplate>
     </ListView.ItemTemplate>
    </ListView>


вот тут работает:

    
Код

<Button Content="{Binding namePartner}" Click="Button_Click_1" Grid.Column="1" Grid.Row="4" Margin="5"/>


а тут не работает

    
Код

<Button Content="{Binding name_trainer}" Tag="{Binding idPersonTrainer}" Click="Button_Click" DockPanel.Dock="Top" />

PM MAIL   Вверх
WolfTheGrey
Дата 21.10.2010, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: 2
Всего: 2



ты нашел решение этой проблеммы?
PM MAIL   Вверх
DenWPF
Дата 21.10.2010, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



неа, лажа полная, в других местах работает..а тут нет... единственное что, тут получается List вложен в List хотя в это м нет не чего страшного
PM MAIL   Вверх
WolfTheGrey
Дата 22.10.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: 2
Всего: 2



говорю же команды надо юзать.\
попробуй так:
создаешь свою команду:
Код

 1: static Window1()
   2: {
   3:     RectangleDoubleClickedCommand = new RoutedUICommand("BondDoubleClickedCommand"
   4:                                                         , "BondDoubleClickedCommand"
   5:                                                         , typeof(Window1));
   6: }

где она привязана к:
Код

1: void ExecuteBondDoubleClicked(object sender, ExecutedRoutedEventArgs e)
   2: {
   3:     MessageBox.Show("I was just double clicked");
   4: }


в хамл создаешь привзку к своей команде:
Код

1: <Window.CommandBindings>
   2:     <CommandBinding Command="my:Window1.RectangleDoubleClickedCommand" 
   3:                     Executed="ExecuteBondDoubleClicked" >
   4:     </CommandBinding>
   5: </Window.CommandBindings>

а используешь ее так:
Код

1: <Rectangle Width="50" Height="50" Fill="Blue">
   2:     <Rectangle.InputBindings>
   3:         <MouseBinding Gesture="LeftDoubleClick" 
   4:                       Command="my:Window1.RectangleDoubleClickedCommand">
   5:         </MouseBinding>
   6:     </Rectangle.InputBindings>
   7: </Rectangle>

PM MAIL   Вверх
WolfTheGrey
Дата 23.10.2010, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: 2
Всего: 2



такс, все работает. Только есть одна беда.
 new RoutedUICommand("BondDoubleClickedCommand", "BondDoubleClickedCommand" , typeof(Window1)); 
проблемма в том что: void ExecuteBondDoubleClicked(object sender, ExecutedRoutedEventArgs e) где sender возврящает обьект виндовс.

и делал так: new RoutedUICommand("BondDoubleClickedCommand", "BondDoubleClickedCommand", typeof(ListBoxItem)); один фиг, sender возврящает обьект виндовс.

А надо ItemsSource
PM MAIL   Вверх
DenWPF
Дата 23.10.2010, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



ок, в течении часа посмотрю попробую.
PM MAIL   Вверх
DenWPF
Дата 23.10.2010, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



я использую CommandParametr  спасибо. 
хотя да было бы интересно как передать сам объект
PM MAIL   Вверх
WolfTheGrey
Дата 29.10.2010, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: 2
Всего: 2



я решил эту проблему smile
PM MAIL   Вверх
DenWPF
Дата 29.10.2010, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



а поделиться?  smile 
PM MAIL   Вверх
WolfTheGrey
Дата 29.10.2010, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: 2
Всего: 2



да че там делиться, все просто как архитектура WPF.
Просто мы вписывали CommandBindings в корне программы, вот и получали в ответ обьект виндовс.

надо делать так:
Код

<ListView>
                <ListView.CommandBindings>
                    <CommandBinding Command="Delete" Executed="CommandBinding_Executed"/>
                </ListView.CommandBindings>
</ListView>

тогда получаем строчку вкоде:
Код

private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
            object item = (sender as ListView).SelectedItem;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0839 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.