Видимость WPF элемента UI на основе комбинированного выбора

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

    <ComboBox Name="comboMyCombo">
        <ComboBoxItem>Don't show the label</ComboBoxItem>
        <ComboBoxItem>Show the label</ComboBoxItem>
    </ComboBox>

    <Label Visibility="Collapsed">This is my label
        <Label.Style>
            <Style>
                <Style.Triggers>
                    <DataTrigger 
                            Binding="{Binding ElementName=comboMyCombo, Path=SelectedValue}" Value="Show the label">
                        <Setter Property="Label.Visibility" Value="Visible"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Label.Style>
    </Label>
12
задан tim 1 April 2010 в 16:08
поделиться

1 ответ

Здесь есть две проблемы. Во-первых, видимость по умолчанию должна быть указана в стиле. Но даже с этим он не будет работать, потому что привязка на триггере сравнивает SelectedValue, объект ComboBoxItem с объектом string, а это никогда не будет эквивалентно. Чтобы упростить пример, я поместил соответствующие значения в свойства Tag объекта ComboBoxItem. Хотя фактическая реализация сравнения, вероятно, будет варьироваться в зависимости от конкретных потребностей приложения.

    <ComboBox Name="comboMyCombo">
        <ComboBoxItem Tag="Hide">Don't show the label</ComboBoxItem>
        <ComboBoxItem Tag="Show">Show the label</ComboBoxItem>
    </ComboBox>

    <Label>This is my label
        <Label.Style>
            <Style>
                <Setter Property="Label.Visibility" Value="Collapsed"></Setter>
                <Style.Triggers>
                    <DataTrigger  
                        Binding="{Binding ElementName=comboMyCombo, Path=SelectedItem.Tag}" Value="Show">
                        <Setter Property="Label.Visibility" Value="Visible"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Label.Style>
    </Label>
27
ответ дан 2 December 2019 в 04:02
поделиться
Другие вопросы по тегам:

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