WPF - Свяжите с данными к использованию StackPanel DataTemplates

Нет никакого официального API, чтобы сделать это, нет.

необходимо использовать API платформы для уничтожения потока, например, pthread_kill или TerminateThread. Можно получить доступ к такому API, например, через pythonwin, или через ctypes.

Уведомление, что это по сути небезопасно. Это, вероятно, приведет к безнадежному в отношении оплаты мусору (от локальных переменных стековых фреймов, которые становятся мусором), и может привести к мертвым блокировкам, если уничтожаемый поток имеет GIL в точке, когда это уничтожается.

10
задан Ronald 20 July 2009 в 13:29
поделиться

3 ответа

Замените StackPanel в вашем примере на ContentPresenter и вместо DataContext установите свойство Content. Это должно сработать.

11
ответ дан 4 December 2019 в 01:02
поделиться

Вы можете создать 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, ура.

0
ответ дан 4 December 2019 в 01:02
поделиться

Несмотря на то, что вы установили привязку для второго настраиваемого элемента управления, устанавливаете ли вы DataContext, поскольку привязка - это маршрут к информации, а DataContext - это информация, к которой она применяет эту информацию привязки.

Эндрю

0
ответ дан 4 December 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: