2010-12-02 68 views
0

因此,当用户单击组合框项目的文本时,我的WPF应用程序中有几个组合框未改变选择。为了选择一个特定的项目,你必须点击文本的右侧或左侧。点击文本时,我有另一个组合框可以选择。两者之间的唯一区别是数据绑定。数据绑定到一种或另一种类型的ObservableCollection时,不会选择何时单击文本的组合框。工作的组合框具有手动插入的静态值。WPF/C#Combobox只在文本区域外发现点击时更改选择

我已经广泛搜索这个问题,我似乎无法找到任何其他人有这个问题或任何远程类似。我没有设置任何奇怪的属性。

这里是有问题的组合框的一个代码:

<ComboBox HorizontalAlignment="Left" Margin="40,160,0,0" VerticalAlignment="Top" Width="132" ItemsSource="{Binding Path=Systems}" SelectedItem="{Binding Path=System}" SelectedIndex="0"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <ComboBoxItem Content="{Binding Path=Name}"/> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

这里是行为的视频:

http://www.youtube.com/watch?v=D0r1N1ghw-k

回答

1

enter code here假设我的组合框defind如下

<ComboBox Name="cmb" Width="200" Height="20" DisplayMemberPath="PersonName" SelectedValuePath="PersonID"> 

    </ComboBox> 

请注意,我已经删除了的ItemTemplate部分

和我的模式是如下

public class Person 
{ 
    public string PersonName { get; set; } 

    public string PersonID { get; set; } 
} 

我的结合是在后面的代码,这一步不是必须的,你可以在XAML做到这一点, IAM只是检查快这么多脏代码

public List<Person> source = new List<Person>(); 
    public MainWindow() 
    { 
     InitializeComponent(); 


     for (int i = 0; i < 20; i++) 
     { 
      source.Add(new Person() { PersonID = i.ToString(), PersonName = "Sau" + i.ToString() }); 
     } 
     cmb.ItemsSource = source; 
     this.DataContext = this; 
    } 

所以如果你运行该示例,您将看到您可以选择的值当你点击文本本身。

它的内容属性会导致一些问题,但我不是100%确定的。

+0

这并没有解决问题。它仍然以同样的方式表现。有什么我可以做的更好地调试这个吗?我不知道我是否准确地描述了这个问题,或者我是否遗漏了一些重要的东西。 – Mortilent 2010-12-02 17:36:19