Нет никакого официального API, чтобы сделать это, нет.
необходимо использовать API платформы для уничтожения потока, например, pthread_kill или TerminateThread. Можно получить доступ к такому API, например, через pythonwin, или через ctypes.
Уведомление, что это по сути небезопасно. Это, вероятно, приведет к безнадежному в отношении оплаты мусору (от локальных переменных стековых фреймов, которые становятся мусором), и может привести к мертвым блокировкам, если уничтожаемый поток имеет GIL в точке, когда это уничтожается.
Замените StackPanel в вашем примере на ContentPresenter и вместо DataContext установите свойство Content. Это должно сработать.
Вы можете создать UserControl для отображения TreeView и информации о выборе справа, все в одном. Это избавляет вас от создания каких-либо настраиваемых элементов управления. Пользовательский элемент управления в основном не нужен, поскольку вы не создаете ничего, чего раньше не было.
<UserControl x:Class="NameSpace.SelectionView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="namespace.Controls"
Height="300" Width="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TreeView Name="customTree">
<!--Items go here-->
</TreeView>
<StackPanel Grid.Column="1" MinWidth="50" DataContext="{Binding ElementName=customTree, Path=SelectedItem, Mode=OneWay}">
<StackPanel.Resources>
<DataTemplate DataType="{x:Type StylingTest:CustomViewModelA}">
<controls:CustomADetailsControl />
</DataTemplate>
<DataTemplate DataType="{x:Type StylingTest:CustomViewModelB}">
<controls:CustomBDetailsControl />
</DataTemplate>
</StackPanel.Resources>
<TextBlock Text="{Binding}"/>
</StackPanel>
</Grid>
</UserControl>
Любое другое пользовательское поведение, я уверен, что вы можете создать или установить здесь стили / шаблоны.
Кроме того, вы можете найти один из моих других ответов полезен.
Удачи вам с wpf, ура.
Несмотря на то, что вы установили привязку для второго настраиваемого элемента управления, устанавливаете ли вы DataContext, поскольку привязка - это маршрут к информации, а DataContext - это информация, к которой она применяет эту информацию привязки.
Эндрю