WPF Material Design: создание выбора языка

#c# #wpf #xaml

#c# #wpf #xaml

Вопрос:

Я пытаюсь создать выбор языка в WPF.

Я пытался использовать ComboBox, но он выглядел не так, как я хотел, и также кажется, что ComboBox не очень хорошо принимает изображения определенных размеров.

У меня есть следующий код:

 <ComboBox Height="auto" Foreground="White">
    <materialDesign:HintAssist.Hint>
        <Image Source="image/eua.png" Width="50"/>
    </materialDesign:HintAssist.Hint>
        <ComboBoxItem>
            <Image Source="image/italy.png" Width="50" Height="50"/>
        </ComboBoxItem>
        <ComboBoxItem>
            <Image Source="image/eua.png" Width="50" Height="50"/>
        </ComboBoxItem>
</ComboBox>
  

в приведенном выше коде изображение выглядит следующим образом

введите описание изображения здесь

Как я могу лучше всего это сделать?

На рисунке ниже показана форма, которую вы хотели бы, чтобы она выглядела.

При выборе отображается флаг языка

введите описание изображения здесь

и при нажатии на флаг, показать другие параметры

введите описание изображения здесь

Комментарии:

1. Вы не описали, в чем проблема. Что не так? Что ожидается? Пожалуйста, отредактируйте вопрос и обновите.

2. там было объяснено, что combox не принимает изображение нужного мне размера, изображение обрезается в зависимости от размера

3. Вы не должны использовать флаги для представления языков: flagsarenotlanguages.com/blog / … — как сам британец, я очень обижаюсь, когда флаг США используется для обозначения английского языка 🙂 — Кроме того, какой язык является «канадским» ?

4. @Dai Это флаги были только для примера

5. @robertsobrel: Как обрезаются изображения? Ваш пример не имеет особого смысла.

Ответ №1:

Вы можете попробовать шаблон данных

 <ComboBox>
    <!--Material:Design.Hint-->
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <!--TextHere-->
                <!--Imagehere-->
            </StackPanel>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>
  

Комментарии:

1. используя этот код, я не смог отобразить текст или изображение, есть ли другой способ работы?

2. показывает ли это пустой список коллекции или просто нет вообще?

Ответ №2:

Вы можете попробовать приведенный ниже код. Он был протестирован с изображениями разных размеров. Если у вас возникли проблемы, вы можете оставить комментарий.

 <ComboBox Width="100" Height="35">
        <ComboBoxItem IsSelected="True" >
            <WrapPanel>
                <Button Width="30" Height="30" >
                    <Button.Template>
                        <ControlTemplate>
                            <Image Height="25" Source="image/usa.png" VerticalAlignment="Center"/>
                        </ControlTemplate>
                    </Button.Template>
                </Button>
                <TextBlock Text="English-1" VerticalAlignment="Center"/>
            </WrapPanel>
        </ComboBoxItem>
        <ComboBoxItem >
            <WrapPanel>
                <Button Width="30" Height="30" >
                    <Button.Template>
                        <ControlTemplate>
                            <Image Height="25" Source="image/england.jpg" VerticalAlignment="Center"></Image>
                        </ControlTemplate>
                    </Button.Template>
                </Button>
                <TextBlock Text="English-2" VerticalAlignment="Center"/>
            </WrapPanel>
        </ComboBoxItem>
    </ComboBox>
  

Комментарии:

1. Я протестировал его здесь, и он работает очень хорошо, я могу использовать изображение или изображение с текстом. Спасибо, мне это очень помогло, я все еще учусь работать с wpf