Ваша таблица должна иметь тот же столбец CSV.
DECLARE @STR_COMMAND NVARCHAR(max)
DECLARE @patch VARCHAR(max)
set @patch = ''/*path to csv*/
SELECT @STR_COMMAND = 'BULK INSERT /*table*/ FROM ''' +@patch+ '''
WITH
(
FIELDTERMINATOR = '';'',
ROWTERMINATOR = ''\n''
)'
EXEC SP_EXECUTESQL @STR_COMMAND;
<ListView Name="listView1"
ItemsSource="{Binding Path=SelectedItem.Modules,
ElementName=treeView1, Mode=OneWay}"
IsSynchronizedWithCurrentItem="True">
Где".Modules
"набор дочерних объектов от выбранного treeview объекта, который Вы хотите отобразить. Не волнуйтесь об обеспечении электричеством"SelectedItemChanged
"событие на treeview.
Почему точно это не реализует свойство, я не знаю, но у меня есть предложение вниз ниже.
Ваш код выше будет работать, однако, это не то, что делает свойство IsSynchronizedWithCurrentItem. Любой ItemsControl связывает с ICollectionView свойства ItemsSource. Для получения того ICollectionView мы можем назвать CollectionViewSource. GetDefaultCollectionView (возражают o). В зависимости от типа объекта o, Вы получаете другую конкретную реализацию ICollectionView inteface. CollectionView и ListCollectionView являются двумя реальными классами, которые приходят на ум.
Интерфейс ICollectionView содержит участника под названием CurrentItem. То, что делает IsSynchronizedWithCurrentItem: каждый раз, когда объект нажат на ItemsControl, он устанавливает CurrentItem для представления набора. ICollectionView также имеет два события: CurrentItemChanging и CurrentItemChanged. Когда свойство IsSynchronizedWithCurrentItem будет установлено, ItemsControl обновит SelectedItem на основе того, каков CurrentItem ICollectionView. Имеет смысл?
В ведущем устройстве/детали сценарии WPF мы просто связываем с ICollectionViews, и их CurrentItem (синтаксис CurrentItem - что-то как {Привязка Объектов/Имени}, где Имя является свойством Name на CurrentItem набора.
Таким образом, хотя Ваш код работает на Ваши цели, он не делает то, что делает то свойство. Чтобы сделать, что делает свойство, необходимо сделать следующее:
Теперь, что-либо, что связывается с тем, что CurrentItem ICollectionView будет обновлен.
Это стало длиннее, чем я ожидал. Сообщите мне, необходимо ли дальнейшее разъяснение.
Действительно простое решение состоит в том, чтобы связать Ваши "детали" элементы UI со свойством SelectedValue TreeView. Например, если Ваш TreeView был похож на это:
<TreeView Name="CategoryName" ItemsSource="{Binding Source={StaticResource A_Collection}, Path=RootItems}" />
Затем Вы могли связать, детализирует элементы UI (как текстовое поле) использование:
<TextBox Text="{Binding ElementName=CategoryTreeView, Path=SelectedValue.Name}"/>
Заставил бы текстовое поле быть связанным со свойством Name объектов, в настоящее время выбираемых в TreeView.
Если Вы хотите связать много объектов UI как детали для выбранного объекта TreeView, рассмотреть установку DataContext на elemtent, который содержит средства управления всеми подробностями (DockPanel / Сетка / StackPanel, и т.д.).
Мое решение этого оказалось довольно крошечным.. не знайте, эквивалентно ли это IsSynchronizedWithCurrentItem. ListView обновляется как ожидалось.
// the XAML
<TreeView DockPanel.Dock="Left" x:Name="tvwNodes" ItemsSource="{Binding}" SelectedItemChanged="OnNewNodeSelected"/>
<ListView x:Name="lvwProperties" ItemsSource="{Binding Path=Properties}"
// the code-behind
private void OnNewNodeSelected(object sender, RoutedPropertyChangedEventArgs<object> e)
{
lvwProperties.DataContext = tvwNodes.SelectedItem; // this returns the selected Node obj
}