相关疑难解决方法(0)

可编辑的ComboBox绑定和更新源触发器

需求

我希望有 ComboBox用户可以在其中输入一些文本或从下拉列表中选择文本。当用户Enter在键入后按下或从下拉列表中简单选择项目时,绑定源应该更新(本例中为最佳视图行为)。

问题

  • 什么时候 UpdateSourceTrigger=PropertyChange设置(默认),源更新将在每个字符之后触发,这不好,因为属性设置器调用很昂贵;
  • UpdateSourceTrigger=LostFocus设置,然后从下拉列表中选择项目将需要一个更大的动作实际上失去焦点,这是不是很人性化(点击后需要额外的点击来选择项目)。

我尝试使用UpdateSourceTrigger=Explicit,但效果不佳:

<ComboBox IsEditable="True" VerticalAlignment="Top" ItemsSource="{Binding List}"
          Text="{Binding Text, UpdateSourceTrigger=LostFocus}"
          SelectionChanged="ComboBox_SelectionChanged"
          PreviewKeyDown="ComboBox_PreviewKeyDown" LostFocus="ComboBox_LostFocus"/>

public partial class MainWindow : Window
{
    private string _text = "Test";
    public string Text
    {
        get { return _text; }
        set
        {
            if (_text != value)
            {
                _text = value;
                MessageBox.Show(value);
            }
        }
    }

    public string[] List
    {
        get { return new[] { "Test", "AnotherTest" }; }
    }

    public MainWindow()
    {
        InitializeComponent(); …
Run Code Online (Sandbox Code Playgroud)

c# wpf binding combobox

4
推荐指数
1
解决办法
5282
查看次数

单击另一个按钮时无法获得组合框选定的项目值

我有一个组合框cmbOptions和一个按钮btnShowItem

这是代码:

private void btnShowItem_click(object sender, RoutedEventArgs e)
{
    string item = ((ComboBoxItem)cmbOptions.SelectedItem).Content.ToString(); //Exception is here
}
Run Code Online (Sandbox Code Playgroud)

以下是例外情况:

System.InvalidCastException:"无法将'System.String'类型的对象强制转换为'System.Windows.Controls.ComboBoxItem'."

我已经经历过以下的一些链接:

无法获取ComboBox所选项目值

ComboBox- SelectionChanged事件具有旧值,而不是新值

从c#wpf中的组合框中获取选定的值

等等..

但没有得到解决方案.

请注意我需要在buttonclick上获取comboboxItem的值,而不是cmbSelectionChange事件

c# wpf combobox exception

2
推荐指数
1
解决办法
1202
查看次数

标签 统计

c# ×2

combobox ×2

wpf ×2

binding ×1

exception ×1