gpt4 book ai didi

c# - 可编辑组合框为空时不更新

转载 作者:太空宇宙 更新时间:2023-11-03 12:31:55 31 4
gpt4 key购买 nike

我这里有一个可编辑的组合框:

            <ComboBox IsEditable="True"
Text="{Binding Model.TNumber}" SelectedItem="{Binding SelectedT}" ItemsSource="{Binding TList}"
IsEnabled="{Binding EnableTComboBox}"/>

组合框可以工作,除非您将其退格并设为空。
该框将默认为列表中的第一个值。
如果我退格并将组合框留空,变量 TNumber 仍将包含之前输入的数字。
有没有办法让变量为空?
TNumber 是一个缩写。

最佳答案

我不确定您是在哪个点检查 TNumber 的值,但是您可以做的是在 SelectionChanged 事件处理程序中设置它的值:

private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
TNumber = (sender as ComboBox).SelectedItem as short?;
}

但这需要您将 TNumber 定义为可空短字符 (short?)。

或者,如果您不想允许可空的short,您可以使用:

private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var newValue = (sender as ComboBox).SelectedItem;
if (newValue == null)
TNumber = 0;
else
TNumber = (short)newValue;
}

首先检查新值是否等于 null。如果是,那么我们将 TNumber 设置为 0(或您需要的任何值)。


在对此进行测试时,我注意到 TNumber 似乎在SelectioinChanged 事件触发后 更新,这意味着每当您检查该值时TNumber 在事件中,它将包含以前的值。

解决此问题的一种方法是将此行添加到事件处理程序的顶部:

comboBox.Items.Refresh();

TNumber 设置为新值。 但是ComboBox 中删除值时,这不起作用! (在这种情况下,TNumber 再次仅在 SelectionChanged 事件处理程序之后更新)。

我不知道这是为什么,但我在将 TNumber 作为 short? 时也进行了测试,结果相同。

private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
comboBox.Items.Refresh();

var value = (sender as ComboBox).SelectedItem; // Tested using short? with same result
var x = TNumber;
}

也许其他人可以阐明为什么会发生这种情况,或者从绑定(bind)中更新 TNumber 值的确切时间点。

关于c# - 可编辑组合框为空时不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42424118/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com