Допустим у меня есть некий ComboBox
, у которого будет задача не по назначению.
Допустим первый элемент этого ComboBox должен быть всегда надпись "Выберите фильтры", при этом остальные элементы из себя представляют CheckBox
и TextBox
. Как данную затею можно реализовать? Может есть более удобный контрол из стандартных
Если правильно понял вопрос. Можно сделать так:
1) Создаем в ресурсах коллекцию, которая привязана к вашим реальным данным:
<Window.Resources>
<CollectionViewSource x:Key="MyKey" Source="{Binding Path=MyData}" />
</Window.Resources>
2) Далее у ComboBox
в качестве ItemsSource
используем CompositeCollection
, а так же задаем шаблон для ComboBoxItem
. Выглядит это следующим образом:
<ComboBox SelectedIndex="0">
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem Content="Выберите фильтры" />
<CollectionContainer Collection="{Binding Source={StaticResource MyKey}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
<!-- Шаблон для элементов ComboBox -->
<ComboBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Name}" IsChecked="{Binding IsSelected}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Если я вас правильно понял то так :
<Style x:Key="Filter">
<Setter Property="Control.FontSize" Value="1"/>
</Style>
Текст "Выберите фильтры" сделайте минимальным, можно под цвет комбобокса.
<ComboBox Margin="0,80,0,125" Style="{StaticResource Style}" SelectedIndex="0">
<ComboBoxItem Content="Выберите фильтры" Style="{StaticResource Filter}">
</ComboBoxItem>
<ComboBoxItem>
<CheckBox Content="Выберите" Width="525"/> <- Ставьте ширину не менее ширины самого бокса и тогда событие `IsSelected` никогда не наступит для элемента комбобокса но наступид для чек бокса
</ComboBoxItem>
<ComboBoxItem>
<TextBox Text="Текст" Width="525"/>
</ComboBoxItem>
</ComboBox>
Combobox вряд ли то что вам нужно. Посмотрите этот вариант:
<Expander Header="Выберите фильтры" Grid.Row="1" Width="135" HorizontalAlignment="Left">
<ItemsControl ItemsSource="{Binding Filters}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<DockPanel>
<CheckBox DockPanel.Dock="Right"/>
<TextBlock Text="{Binding Name}" HorizontalAlignment="Center"/>
</DockPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Expander>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
В общем, есть ListBox, мне нужно проверить, если в нем есть элементы, то должна выполниться функция, если он пустой, то ничего не должно происходить
Зачем применять stringEmpty, или в чем его отличие от ""? И в том, и в другом случаях результат - пустая строка