Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

WPF Tabcontrol datagrid

84K
23 октября 2012 года
Rusnekromant
6 / / 23.10.2012
Здравствуйте. Сори за такое название темы но коротко не получиться записать проблему.

И так у меня есть Tabcontrol с несколькими tabitem на паре из них есть datagrid я хочу что бы при переключении на вкладку обновлялся грид (то что это нерентабельно и на 100 000 записей все повиснет меня не интересует сейчас хочу сделать так а потом посмотрим, могу и в отдельном потоке запустить)

Код:
<TabControl x:Name="Вкладки" >
        <TabItem Name="вСписокКонтактов" GotFocus="вСписокКонтактов_GotFocus"  Header="Список контактов">
            <DataGrid Name="табКонтакты"  GotFocus="табКонтакты_GotFocus" AutoGenerateColumns="False" ItemsSource="{Binding}"   IsReadOnly="true"  MouseDoubleClick="табКонтакты_MouseDoubleClick">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Номер"
                            Binding="{Binding Path=id,StringFormat={}{0:F0}}"></DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>
        </TabItem>
        <TabItem Name="вСписокНовыхКонтактов" GotFocus="вСписокНовыхКонтактов_GotFocus"  Header="Список новых контактов">
            <DataGrid Name="табНовыеКонтакты" GotFocus="табНовыеКонтакты_GotFocus" AutoGenerateColumns="False" ItemsSource="{Binding}" IsReadOnly="true" MouseDoubleClick="табНовыеКонтакты_MouseDoubleClick">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Номер"
                            Binding="{Binding Path=id,StringFormat={}{0:F0}}"></DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>
        </TabItem>
    </TabControl>
Само по себе все работает но не работает в связке с событием datagrid
 
Код:
MouseDoubleClick="табНовыеКонтакты_MouseDoubleClick"
в чем суть. При дабл клике происходит событие gotfocus, а именно при первом клике оно происходит и поднимается пузырьком из грида до события вкладки, там происходит обновление грида что сбрасывает select

первое что сделал это прописал простейшее событие дабе не распространялось пузырьком gotfocus

 
Код:
Private Sub табНовыеКонтакты_GotFocus(sender As System.Object, e As System.Windows.RoutedEventArgs)
        e.Handled = True
    End Sub

Но оказываеться когда я выбираю вкладку мышью собираясь перейти на неё (клавой не пробовал да и пользователь в основном мышью будет пользоваться) событие так же возникает почемуто в grid-е а не во вкладке как я ожидал. При всем при том что в routedevents поля sourse и originalsourse идентичны тоесть событие всегда зарождается в гриде.

Как победить это уже второй день думаю, ну и само по себе мне нужно при активировании вкладки обновить грид и при двойном клике тоже должен выполниться код какой нибудь.
62K
21 февраля 2013 года
LWhisper
33 / / 27.11.2012
Возможно, я не совсем понял проблему, но причём тут DoubleClick? При переключении вкладок в TabControl вызывается событие SelectionChanged:
http://msdn.microsoft.com/ru-ru/library/system.windows.controls.tabcontrol.selectionchanged%28v=vs.95%29.aspx
Из SelectionChangedEventArgs можешь получить выбранный TabItem. А на нём найти свой DataGrid.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог