WPF C # ComboBox с несколькими строками и принятием возвратов?

1

Есть ли простой способ сделать многострочное поле со списком в WPF С#? Что я имею в виду? Я имею в виду текстовое поле, поддерживающее несколько строк и возврат каретки; где это слово обертывает... Он должен иметь полосу прокрутки, чтобы, если текст в поле выше высоты выпадающего списка, пользователь может прокручивать вниз.

Кроме того, потому что его combobox, он должен иметь выпадающую кнопку, чтобы пользователь мог быстро поменять местами группы текста. Я пробовал для этого поисковик, но я не могу найти никого, кто бы говорил о такой команде.

Теги:
wpf
combobox

1 ответ

3
Лучший ответ

ДЛЯ ПОЛНОГО РЕШЕНИЯ РАБОТЫ:

XAML:

    <Window x:Class="delete.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ComboBox Height="30" Width="300" ItemsSource="{Binding items}" SelectedItem="{Binding item}">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBox AcceptsReturn="True" TextWrapping="Wrap" Width="250" Height="30" Text="{Binding Name}" VerticalScrollBarVisibility="Auto"/>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
    </Grid>
</Window>

Код-за:

    using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace delete
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window, INotifyPropertyChanged
    {
        public MainWindow()
        {
            InitializeComponent();
            Setup();
            this.DataContext = this;
        }

        ObservableCollection<Thang> _items;
        public ObservableCollection<Thang> items
        {
            get { return _items; }

            set
            {
                _items = value;
                OnPropertyChanged("items");
            }
        }

        private Thang _item;
        public Thang item
        {
            get { return _item; }
            set
            {
                _item = value;
                OnPropertyChanged("item");
            }
        }

        public void Setup()
        {
            items = new ObservableCollection<Thang>();
            items.Add(new Thang("1", "One"));
            items.Add(new Thang("2", "Two"));
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected void OnPropertyChanged(string name)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(name));
            }
        }
    }

    public class Thang
    {
        public Thang(string id, string name)
        {
            Name = name;
            ID = id;
        }

        public string Name { get; set; }
        public string ID { get; set; }
    }
}
  • 0
    К сожалению, это не работает ... текстовое поле не принимает возврат каретки, и текст не переносится после достижения горизонтальной границы.
  • 0
    Кроме того, выпадающее меню не отображает элементы правильно.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню