无法在UWP中的ComboBox中选择项目

时间:2016-11-20 16:55:31

标签: c# combobox uwp

我创建了与ObservableCollection绑定的ComboBox。这是代码。

XAML

import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Frame extends JFrame implements ItemListener {

    JLabel lbl1 = new JLabel("SERVICES");
    JLabel price1 = new JLabel("100.00");
    JLabel price2 = new JLabel("200.00");
    JLabel price3 = new JLabel("300.00");

    JCheckBox haircut = new JCheckBox("Hair Cut");
    JCheckBox fullcolor = new JCheckBox("Full Color");
    JCheckBox hairrebond = new JCheckBox("Hair Rebond");

    JPanel first = new JPanel();
    JPanel second = new JPanel();
    JPanel third = new JPanel();
    double price, total;

    public Frame() {

        FlowLayout flow = (new FlowLayout(FlowLayout.LEFT, 30, 30));
        add(lbl1);
        first.add(hairrebond);
        first.add(price1);
        second.add(haircut);
        second.add(price2);
        third.add(fullcolor);
        third.add(price3);

        add(first);
        add(second);
        add(third);

        setLayout(flow);
        setVisible(true);
        setSize(600, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        haircut.addItemListener(this);
        fullcolor.addItemListener(this);
        hairrebond.addItemListener(this);
    }

    @Override
    public void itemStateChanged(ItemEvent e) {
        int sum = 0;
        if (hairrebond.isSelected() == true) {
            sum += 100;

        }

        if (fullcolor.isSelected() == true) {
            sum += 300;
        }
        if (haircut.isSelected() == true) {
            sum += 200;
        }

        total = sum;
        System.out.println(total);

    }

    public static void main(String args[]) {

        Frame one = new Frame();

    }
}

C#class

        <StackPanel HorizontalAlignment="Center"
                    Grid.Row="0">
            <TextBlock Text="Choose a city" />
            <ComboBox x:Name="CityComboBox"
                      SelectionChanged="CityComboBox_SelectionChanged"
                      ItemsSource="{x:Bind cities}" 
                      HorizontalAlignment="Center" 
                      VerticalAlignment="Top">
                <ComboBox.ItemTemplate>
                    <DataTemplate x:DataType="data:City">
                        <ComboBoxItem Content="{x:Bind name}" />
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>
        </StackPanel>

当我运行应用程序时,我无法选择ComboBoxItem单击它的中心,而只是在项目的边缘。如果我使用ComboBox而没有包含但硬编码的项目,它可以正常工作。

Image

仅在绿色区域单击时才选择有效。点击红色区域什么都不做。

导致此问题的原因以及如何解决?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您不应该在DataTemplate中使用ComboBoxItem,因为DataTemplate的内容将自动添加到另一个ComboBoxItem中。在您的解决方案中,另一个ComboBoxItem中有ComboBoxItem。

因此,您的问题的解决方案应该是这样的:

<ComboBox.ItemTemplate>
    <DataTemplate x:DataType="data:City">
        <TextBlock Text="{x:Bind name}" />
    </DataTemplate>
</ComboBox.ItemTemplate>