当前位置: 首页 > 知识库问答 >
问题:

验证组合框选择[重复]

鞠边浩
2023-03-14

我在XAML有一个组合框,写为

<ComboBox  ItemsSource="{Binding Path=Options}" 
           SelectedItem="{Binding Path=CurrentValue}"/>

并且“货币价值”在ViewModel类中实现为

private string m_CurrentValue;
public string CurrentValue
{
    get { return this.m_CurrentValue; }
    set
    {
        if (m_CurrentValue != value)
        {
            if (IsValid(value))
            {
                this.m_CurrentValue = value;
                SetData(this.m_CurrentValue);
            }

            this.SendPropertyChangedEvent(nameof(this.CurrentValue));
        }
    }
}

在这里设置货币值之前,它会根据某些条件进行验证。我的目的是在验证失败时将组合框选择更改为先前的值。这不适用于组合框,但是此方法非常适用于CheckBox控件——下面给出的代码片段。

<CheckBox VerticalAlignment="Center" IsChecked="{Binding Path=CurrentValue}" Width="15" IsEnabled="{Binding Path=IsEnabled}"/>

private bool m_CurrentValue;
public bool CurrentValue
{
    get { return this.m_CurrentValue; }
    set
    {
        if (m_CurrentValue != value)
        {
            if (IsValid(value))
            {
                this.m_CurrentValue = value;
                SetData(this.m_CurrentValue);
            }

            this.SendPropertyChangedEvent(nameof(this.CurrentValue));
        }
    }
} 

有什么方法可以让这个为ComboBox工作吗?任何替代实现也可以。

共有2个答案

江飞白
2023-03-14

创建一个包含combobox的用户控件,它将满足您的需求。有依赖属性,你可以跟踪,如果需要,改变由于状态值,你有设置,以处理操作中包含的组合框。

创建具有当前组合选择的索引的内部状态变量。当操作检测到返回前一状态时,将内部组合框设置为该值。

闻人杰
2023-03-14

有什么方法可以使ComboBox工作吗?任何替代实现也可以。

您可以使用调度程序将后备字段设置为上一个值,如下所示:

private string m_CurrentValue;
public string CurrentValue
{
    get { return this.m_CurrentValue; }
    set
    {
        if (m_CurrentValue != value)
        {
            string previousValue = m_CurrentValue;
            //set the field
            this.m_CurrentValue = value;
            if (IsValid(value))
            {
                SetData(this.m_CurrentValue);
                this.SendPropertyChangedEvent(nameof(this.CurrentValue));
            }
            else
            {
                Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                {
                    m_CurrentValue = previousValue;
                    this.OnPropertyChanged(nameof(this.CurrentValue));
                }), DispatcherPriority.ApplicationIdle);
            }
        }
    }
}

请参考链接了解更多信息。

 类似资料:
  • 问题内容: 我有一个复选框列表,其中至少一个是强制性的。我试图通过AngularJS验证来实现这一点,但是很难。下面是我的代码: 以下是plunker中的代码:http ://plnkr.co/edit/Bz9yhSoPYUNzFDpfASwt?p=preview 有没有人在AngularJS上做到这一点?使复选框成为必需,迫使我选择所有复选框值。AngularJS文档中也未记录此问题。 问题答案

  • 我有一个带有组合框的xaml。由于某种原因,我在那里有一些项目,我不能选择它们,当我选择一个项目时,它通常不允许我更改我的选择,如果它更改了,它仅适用于某些值。这是代码: 我希望我写的很清楚,因为我把它从电脑复制到了手机上。基本上,我有所有的用户,并按部门对他们进行分类。用户只能看到他所在部门的文档,并且可以选择绑定词典中可用的文档。如果不可用,组合框中的项目将为红色且不可检查。这个管用。唯一没有

  • 问题内容: 我们正在使用Selenium WebDriver和JBehave在我们的Web应用程序上运行“集成”测试。我有一种方法,可以在表单输入中输入一个值。 但是,当我尝试使用它在下拉列表中选择一个项目时,它(毫无疑问)失败了 java.lang.UnsupportedOperationException:您只能设置作为输入元素的元素的值 如何在组合中选择一个值? 问题答案: 这是怎么做的:

  • 我在后台有< code>ViewModel(实现< code > INotifyPropertyChanged )和类< code>Category,它只有一个< code>string类型的属性。我的ComboBox SelectedItem绑定到类别的实例。当我更改instance的值时,SelectedItem没有更新,Combobox也没有更改。 编辑:代码 组合框: 物业: 我尝试的是:

  • 所以,我有一个奇怪的问题,我从组合框列表中选择一个项目,为了填充第二个组合框,我必须首先从第一个组合框中再次选择单词,而不是从项目列表中,而是单词本身。只有这样,代码才会注册我选择了该项目。我拥有的代码是简单的$variable.SelectedItem。参见下面的代码; 我想做的就是从下拉列表中选择位置“医院”,然后第二个名为“$ComboBox_Printer”的组合框填充我服务器中的打印机名

  • 我有一个奇怪的问题。我在JavaFX中使用了一个ComboBox,其中每一项都是一个HBox,是一个图像和一个标签的组合。 是字符串的数组列表。只是一个