Есть несколько гридов. Все они скрыты до тех пор пока в ComboBox
не выбрано ComboBoxItem
. Когда выбираю один из ComboBoxItem
должен появиться соответственно один из гридов. Привязку пытаюсь сделать в XAML без вью модели:
<Grid x:Name="Cash" Visibility="{Binding ElementName=cmb_Security, Path=SelectedValue.Cash}" >
Cash
это Item в Сombobox но сам грид виден независимо от того выбрано ли что то в боксе вообще. Как исправить это расширение разметки ?
В вашем вопросе на мой взгляд содержаться два отдельных.
Первый - это как отображать элемент только в том случае, когда есть выбранный элемент. Эту проблему можно решить с помощью триггера с проверкой на то, что SelectedIndex
!= -1
. Простейший пример:
<Grid HorizontalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ComboBox Name="some"
Grid.Row="0"
Margin="10"
MinWidth="120"
ItemsSource="{Binding Data}" />
<TextBlock Grid.Row="1" Text="{Binding Path=SelectedItem, ElementName=some}" Margin="10">
<TextBlock.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=some, Path=SelectedIndex}" Value="-1">
<Setter Property="TextBlock.Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
для полноты примера привожу тривиальный контекст для данных
module Context2 =
open Gjallarhorn.Bindable
let create() =
let source = Binding.createSource()
[|"Some1"; "Some2" ; "Some3" |]
|> Binding.constantToView "Data" <| source
source
Второй - как в зависимости от выбранного элемента в списке отобразить соответствующие данные. Если вкратце - вы создаете список из "страничных" VM и привязываете его к вашему ComboBox
. Выбранный элемент вы можете непосредственно отображать в ContentControl
через привязку к SelectedItem или завести свойство в основной VM которое и будет отвечать за выбранную VM
.
На этот счет есть замечательная статья Navigation with MVVM, где вы можете прочитать об этом подходе более подробно, а также посмотреть на реализацию простого примера.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я создал две кнопки которые должны открывать Word и ExcelWord открывает, а вот Excel не открывает
Здравствуйтекак можно изменить разрешение видео на joomla
Всем приветСтолкнусля со следующей проблемой: необходимо создать плагтн для хрома для VoIP