【发布时间】:2018-10-02 08:10:20
【问题描述】:
我有一个包含我的类别的组合框。在这个组合框中,我还有一个名为 的项目,它有一个点击事件。 For now, lets forget about that it opens a new window or dialog window to add a new category ... now I want whenever the is selected the combo box selected index change to -1.
<ComboBox x:Name="testcombo" HorizontalAlignment="Left" Margin="268,213,0,0" VerticalAlignment="Top" Width="120" Background="#FFC58383" DisplayMemberPath="data" SelectedValuePath="id">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<EventSetter Event="PreviewMouseLeftButtonUp" Handler="ComboBoxItem_PreviewMouseLeftButtonUp"/>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
和c#
namespace WpfApp4
{
public partial class MainWindow : Window
{
public class Modell
{
public int id { get; set; }
public string data { get; set; }
}
public MainWindow()
{
InitializeComponent();
testcombo.Items.Add(new Modell { id = 0, data = "<--NEW-->" });
testcombo.Items.Add(new Modell { id = 1 , data = "dddd" });
testcombo.Items.Add(new Modell { id = 2, data = "dddzxcd" });
testcombo.Items.Add(new Modell { id = 3, data = "ddczdd" });
}
private void ComboBoxItem_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
var cat_obj = (sender as ComboBoxItem).Content as Modell;
if (cat_obj.id == 0)
{
testcombo.SelectedIndex = -1;
//MessageBox.Show("", "", MessageBoxButton.OK);
}
}
}
}
问题是上面的代码没有将索引更改为-1,但是当我在testcombo.SelectedIndex = -1;它的行之后或之前添加一个消息框时:|
注意:我无法在组合框 SelectionChanged 中对 -1 进行索引,因为在主项目中我有 keyUp 事件,该事件通过键盘 arrowUp/Down 选择项目
【问题讨论】:
-
从组合框中删除“新类别”项目并创建一个“新类别”按钮,在创建新类别后会将这个类别添加到组合框项目中。
-
另一种在代码中设置索引的方法,您可以在其中为“新类别”打开一个窗口。