我创建了与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而没有包含但硬编码的项目,它可以正常工作。
仅在绿色区域单击时才选择有效。点击红色区域什么都不做。
导致此问题的原因以及如何解决?
提前致谢!
答案 0 :(得分:1)
您不应该在DataTemplate中使用ComboBoxItem,因为DataTemplate的内容将自动添加到另一个ComboBoxItem中。在您的解决方案中,另一个ComboBoxItem中有ComboBoxItem。
因此,您的问题的解决方案应该是这样的:
<ComboBox.ItemTemplate>
<DataTemplate x:DataType="data:City">
<TextBlock Text="{x:Bind name}" />
</DataTemplate>
</ComboBox.ItemTemplate>