Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / combobox и скрытие для выбора некоторых его элементов? / 11 сообщений из 11, страница 1 из 1
24.08.2010, 14:20
    #36808062
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
combobox и скрытие для выбора некоторых его элементов?
народ, не могу победить ограничение выбора элементов комбобокса.
пробую самое элементарное visible свойство через конвертер меняю. так у меня в комбобоксе они не пропадают, а становятся высотой в 5 пикселей и их можно выбрать :(
и так с любым свойством, хоть ishittestvisible , там тоже можно выбрать , если мышкой щелкнуть под край границы элемента.

хотелось бы просто ограничить выбор элементов в зависимости от условия.
никто не знает как?
...
Рейтинг: 0 / 0
24.08.2010, 15:51
    #36808453
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
combobox и скрытие для выбора некоторых его элементов?
ок. сделаю пост более интерактивным.
приложил файлик.
в нем убрана видимость элементов комбобокса. но при открытии его, видны контейнеры от элементов и их можно щелкать и все как быработает.

вот хотелось,чтобы исчезли элементы, а не так вот криво трансформировались.
...
Рейтинг: 0 / 0
24.08.2010, 16:33
    #36808620
JohnSparrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
combobox и скрытие для выбора некоторых его элементов?
Честно говоря, не совсем ясен вопрос. Если Вы хотите, чтобы в комбобоксе отображались не все элементы некоторого списка, а только их подмножество в зависимости от некоторого условия, то Вам нужно сделать вот так:
[SRC xml]
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Width="200" SizeToContent="Height">
<StackPanel>
<TextBox Text="{Binding Path=Start, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,10"/>
<ComboBox ItemsSource="{Binding Path=Items, UpdateSourceTrigger=PropertyChanged}" MinWidth="100" />
</StackPanel>
</Window>
[/SRC]
...
Рейтинг: 0 / 0
24.08.2010, 16:35
    #36808627
JohnSparrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
combobox и скрытие для выбора некоторых его элементов?
Блин, случайно нажал кнопку "Опубликовать".
----

Честно говоря, не совсем ясен вопрос. Если Вы хотите, чтобы в комбобоксе отображались не все элементы некоторого списка, а только их подмножество в зависимости от некоторого условия, то Вам нужно сделать вот так:

MainWindow.xaml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Width="200" SizeToContent="Height">
    <StackPanel>
        <TextBox Text="{Binding Path=Start, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,10"/>
        <ComboBox ItemsSource="{Binding Path=Items, UpdateSourceTrigger=PropertyChanged}" MinWidth="100" />
    </StackPanel>
</Window>

MainWindow.xaml.cs
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            this.DataContext = new MyData();
        }
    }

MyData.cs
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
    // модель данных
    public class MyData: INotifyPropertyChanged
    {
        #region INotifyPropertyChanged Members

        // Raised when a property on this object has a new value.
        public event PropertyChangedEventHandler PropertyChanged;

        // Raises this object's PropertyChanged event.
        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = this.PropertyChanged;
            if (handler != null)
            {
                var e = new PropertyChangedEventArgs(propertyName);
                handler(this, e);
            }
        }

        #endregion // INotifyPropertyChanged Members

        // полный (исходный) массив строк
        private string[] _names = new string[] {
                "Саша", "Петя", "Вася", "Ваня", "Маша", "Сеня", "Алена", "Андрей", "Алеша", "Паша", "Кеня", "Коля"
            };

        // массив строк - источник данных для комбобокса
        private string[] _items;
        public string[] Items
        {
            get { return _items; }
            private set 
            {
                _items = value;
                OnPropertyChanged("Items");
            }
        }

        // на основании этого свойства меняется источник данных для комбобокса
        private string _start;
        public string Start
        {
            get { return _start; }
            set 
            { 
                _start = value;
                OnPropertyChanged("Start");

                // вот здесь изменяем источник данных для комбобокса
                if(string.IsNullOrEmpty(Start))
                    Items = _names;
                else
                    Items = (from name in _names where name.StartsWith(_start) select name).ToArray(); 
            }
        }    

        // ctor
        public MyData()
        {
            // инициализируем свойства
            Start = "";
        }
    }
...
Рейтинг: 0 / 0
24.08.2010, 18:00
    #36808906
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
combobox и скрытие для выбора некоторых его элементов?
JohnSparrow,

у меня этот комбобокс находится в гриде.
то есть там комбобоксом столько же , сколько и строк.
и каждый комбобокс с базовым одинаковым источником даных
и у каждого комбобокса он модифицирован
и вот я привел пример, модификация через visiblity оставляет, какието пустые прямоугольники :(
...
Рейтинг: 0 / 0
25.08.2010, 05:01
    #36809377
aleks-sam
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
combobox и скрытие для выбора некоторых его элементов?
Я че то подобное делал через ListCollectionView используя его предикат Filter для ListBox'а. Посмотри, может и для комбика подойдет.
...
Рейтинг: 0 / 0
25.08.2010, 23:08
    #36811791
JohnSparrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
combobox и скрытие для выбора некоторых его элементов?
AlexeiK, так или иначе, но фильтровать стоит источник данных комбобокса, а не скрывать какие-то элементы в при выводе в нем.
...
Рейтинг: 0 / 0
26.08.2010, 05:55
    #36811929
eJack
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
combobox и скрытие для выбора некоторых его элементов?
AlexeiK,

Ну надо фильтровать источник данных - так правильно.
Хотя можно попробывать выставить в свойстве Visiblity значение Collapsed
...
Рейтинг: 0 / 0
26.08.2010, 11:24
    #36812409
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
combobox и скрытие для выбора некоторых его элементов?
eJack,

автормодификация через visiblity оставляет, какието пустые прямоугольники
видишь) я писал уже об этом. ставишь в collapsed и артефакаты получаю :(
...
Рейтинг: 0 / 0
26.08.2010, 11:50
    #36812508
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
combobox и скрытие для выбора некоторых его элементов?
народ я забыл указать, что это Silverlight 3.
...
Рейтинг: 0 / 0
26.08.2010, 12:13
    #36812591
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
combobox и скрытие для выбора некоторых его элементов?
ха! сделал.

Код: plaintext
1.
2.
3.
4.
5.
6.
 
Private _statsView As ICollectionView
  Dim i As New System.Windows.Data.CollectionViewSource

   i.Source = StatusList
   _statsView = i.View
   _statsView.Filter = New Predicate(Of Object)(AddressOf FilterLB)

Код: plaintext
<ComboBox x:Name="cbStats" ItemsSource="{Binding StatsView}" />

для будущих вопросов.
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / combobox и скрытие для выбора некоторых его элементов? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]