【问题标题】:C# WPF DataGrid Event Handler for reading-in editable ComboBox values in a columnC# WPF DataGrid 事件处理程序,用于读入列中可编辑的 ComboBox 值
【发布时间】:2019-02-03 03:53:16
【问题描述】:

我正在寻找一个事件处理程序,它将从可编辑的组合框中传递更新的值(这意味着 text-entry 也是一个可以输入的值,以及下拉菜单中的一个可选择项,在某些行中) .

我还需要在更新组合框时获取同一行中其他列的值。

非常感谢有关如何获取值的示例代码。

【问题讨论】:

    标签: c# wpf combobox datagrid


    【解决方案1】:

    试试TextBoxBase.TextChanged 事件:

    private void ComboBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        ComboBox comboBox = (ComboBox)sender;
        string text = comboBox.Text;
        IEnumerable items = comboBox.Items.OfType<ComboBoxItem>();
        ComboBoxItem selectedItem = comboBox.SelectedItem as ComboBoxItem;
        Debug.WriteLine(text);
    }
    

    XAML:

    <ComboBox IsEditable="True" TextBoxBase.TextChanged="ComboBox_TextChanged">
        <ComboBoxItem>first</ComboBoxItem>
        <ComboBoxItem>second</ComboBoxItem>
        <ComboBoxItem>third</ComboBoxItem>
    </ComboBox>
    

    【讨论】:

    • 看起来它正在正常工作,但在填充网格时也会输出变量“text”。在填充网格时是否有跳过此功能?另外,有没有办法使用这种方法获取另一列的值?
    • 网格被填充,这意味着网格正在根据它们的绑定加载值。我实际上可以使用“if (GRID.SelectedItem == null) return;”来做到这一点
    • 此方法在大多数情况下都有效,但在将文本实际输入可编辑文本框时遇到问题。在框中键入时,输入被中断,因为每次击键都会调用该函数。
    • @ChristopherSwierczynski:应该是这样。您不应做任何将焦点从事件处理程序中的 TextBox 移开的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    相关资源
    最近更新 更多