Почему является мое текстовое поле WPF “своего рода” только для чтения?

Уровень 4 выбора вводит :has() (ранее индикатор объекта !), который позволит вам выбрать предыдущего брата с:

previous:has(+ next) {}

... но в время написания, это некоторое расстояние, выходящее за пределы кровопускания для поддержки браузера.

22
задан Russ 24 February 2009 в 19:47
поделиться

4 ответа

Я встречался с проблемой, очень похожей на это. После проведения небольшого исследования я нашел подобную проблему перечисленной в MSDN:

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c68d5f3c-c8cc-427d-82e3-6135d075a304/

Согласно ответу на сообщение, проблема имеет отношение к WPF и WinForms, имеющему два совсем других способа обработать ввод текста. К счастью, упомянутое выше сообщение дает следующее решение:

При запуске окна, используйте ElementHost. EnableModelessKeyboardInterop (window1). Обратите внимание, что это - статический метод - Вы не должны инстанцировать класса ElementHost.

, Например,

Window window1 = new Window();
ElementHost.EnableModelessKeyboardInterop(window1);
window1.Show();

Это решило проблему для меня. Надежда это помогает.

45
ответ дан 29 November 2019 в 04:29
поделиться

Я создал простое тестовое приложение, и я могу ввести новый текст в TextBoxes в ListBox:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:app="clr-namespace:WpfApplication1"
    Title="Window1" Height="300" Width="300">
    <ListBox ItemsSource="{Binding Details}"
        HorizontalAlignment="Stretch"
        VirtualizingStackPanel.VirtualizationMode="Recycling">
        <ListBox.Resources>
            <DataTemplate DataType="{x:Type app:Data}">
                <StackPanel Orientation="Horizontal">
                    <ComboBox />
                    <TextBox SpellCheck.IsEnabled="True" TextWrapping="Wrap"
                        HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                        Text="{Binding Path=Text, Mode=TwoWay}" />
                </StackPanel>
            </DataTemplate>
        </ListBox.Resources>
    </ListBox>
</Window>

единственная разница, которую я вижу между этими двумя, - то, что ItemTemplate установлен на Вашем ListBox, и каждый не находится на моем. Каков XAML для rADetailEntryLayout?

0
ответ дан 29 November 2019 в 04:29
поделиться

Очевидно, необходимо добавить элемент ScrollViewer с x: Name = "PART_ContentHost" к элементу Border, см. Примечание по адресу: http://msdn.microsoft.com/en -us / library / ms752068.aspx

0
ответ дан 29 November 2019 в 04:29
поделиться

Прежде всего, вы заметили, что для вашего предмета не задан шаблон ItemTemplate? во-вторых, почему вы объявили DataTemplate внутри ресурса? вы хотите использовать несколько типов в ItemTemplate? в этом случае вам понадобится DataTemplateSelector, который вернет конкретный DataTemplate для указанного типа, иначе, если вам просто нужно добавить шаблон в этот конкретный элемент, замените ListBox.Resources на ListBox.ItemTemplate и удалите ключ из dataTemplate, скомпилируйте его и готово.

вот как это должно быть для правильной работы:

<ListBox Grid.Column="1" ItemsSource="{Binding Path=Details}" VirtualizingStackPanel.VirtualizationMode="Recycling" HorizontalContentAlignment="Stretch" >
        <!-- Remove this <ListBox.Resources> -->
        <!-- Add this -->
        <ListBox.ItemTemplate>
            <!-- Remove this <DataTemplate DataType="{x:Type Entities:RADetailEntry}"> -->
            <!-- Add this -->
            <DataTemplate>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <ComboBox Grid.Column="0" />
                    <TextBox Grid.Column="1" IsReadOnly="False" IsEnabled="True" 
                        Text="{Binding Path=Description, Mode=TwoWay}" TextWrapping="Wrap"
                        HorizontalAlignment="Stretch" VerticalAlignment="Stretch" TextAlignment="Left"
                        />
                </Grid>
            </DataTemplate>
        <!-- Remove this </ListBox.Resources> -->
        <!-- Add this -->
        </ListBox.ItemTemplate>
    </ListBox>

Надеюсь, это все еще полезно, так как долгое время с момента публикации вопроса ...

0
ответ дан 29 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

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