Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 当控件创建为';倒塌';_Wpf_Datatrigger_Idataerrorinfo - Fatal编程技术网

Wpf 当控件创建为';倒塌';

Wpf 当控件创建为';倒塌';,wpf,datatrigger,idataerrorinfo,Wpf,Datatrigger,Idataerrorinfo,编辑我正在添加其他代码以进行澄清 让IDataErrorInfo错误指示符显示在最初创建为“折叠”的控件上,然后使用DataTrigger使其可见时,我遇到了一个问题 有一个组合框控件绑定到查找值,它显示三行。。。“现金”、“信用卡”和“支票”。 我有两个文本框控件,分别绑定到“CreditCardCode”和“CheckNumber” TextBox控件设置了DataTrigger,使其仅在选择相关ComboBox值时可见。如果相关文本框没有值,数据错误逻辑将显示错误 以下是组合框和文本框的X

编辑我正在添加其他代码以进行澄清

让IDataErrorInfo错误指示符显示在最初创建为“折叠”的控件上,然后使用DataTrigger使其可见时,我遇到了一个问题

有一个组合框控件绑定到查找值,它显示三行。。。“现金”、“信用卡”和“支票”。 我有两个文本框控件,分别绑定到“CreditCardCode”和“CheckNumber”

TextBox控件设置了DataTrigger,使其仅在选择相关ComboBox值时可见。如果相关文本框没有值,数据错误逻辑将显示错误

以下是组合框和文本框的XAML:

<ComboBox IsEditable="False" 
          IsSynchronizedWithCurrentItem="False" 
          SelectedItem="{Binding Path=PaymentType}"
          ItemsSource="{Binding Source={StaticResource paymentTypeLookup}}"
          DisplayMemberPath="{Binding PaymentTypeCode}">
      <ItemsControl.ItemTemplate>
          <DataTemplate>
              <StackPanel Orientation="Horizontal">
                  <TextBlock Text="{Binding Path=PaymentTypeCode,
                                  ValidatesOnDataErrors=True}" />
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ComboBox>

<TextBox Name="CCCodeText" 
    Text="{Binding CreditCardCode, ValidatesOnDataErrors=True, 
           ValidatesOnExceptions=True, NotifyOnValidationError=True}" >
    <TextBox.Style>
        <Style TargetType="TextBox">
            <Setter Property="TextBox.Visibility" Value="Collapsed" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=PaymentComboBox, 
                                       Path=SelectedItem.PaymentTypeCode}" 
                             Value="CC_SWIPE">
                    <Setter Property="TextBox.Visibility" 
                                      Value="Visible" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>
以下是OnPaymentTypeChanged()函数:

void OnPaymentTypeChanged(PaymentType value)
{
    errors.Remove("CheckNumber"); //Avoid Dupes
    errors.Remove("CreditCardCode"); //Avoid Dupes

    if (this.PaymentType != null)
    {
        if (value.PaymentTypeCode == "CHECK" && 
           (this.CheckNumber == String.Empty || this.CheckNumber == null))
           errors.Add("CheckNumber", "Check Number required");

        else if (value.PaymentTypeCode == "CC_SWIPE" 
                 && (this.CreditCardCode == String.Empty || 
                     this.CreditCardCode == null))
            errors.Add("CreditCardCode", "Credit Card Code required");
    }
}
如果在第一次显示窗口时将组合框设置为“信用卡”(并且CCCodeText控件可见),则默认的红色边框显示良好。但是如果我将ComboBox的值更改为“Check”,并且出现CheckTextBox控件,则它缺少红色边框

当我将组合框更改回“信用卡”时,红色边框仍然存在


我是否缺少某个刷新属性???

我认为我们需要更多的代码来帮助您。感谢Rhyous,我为combobox添加了xaml,并添加了创建IDataErrorInfo记录的代码。我认为我们需要更多的代码来帮助您。感谢Rhyous,我已经为combobox添加了xaml和创建IDataErrorInfo记录的代码。
void OnPaymentTypeChanged(PaymentType value)
{
    errors.Remove("CheckNumber"); //Avoid Dupes
    errors.Remove("CreditCardCode"); //Avoid Dupes

    if (this.PaymentType != null)
    {
        if (value.PaymentTypeCode == "CHECK" && 
           (this.CheckNumber == String.Empty || this.CheckNumber == null))
           errors.Add("CheckNumber", "Check Number required");

        else if (value.PaymentTypeCode == "CC_SWIPE" 
                 && (this.CreditCardCode == String.Empty || 
                     this.CreditCardCode == null))
            errors.Add("CreditCardCode", "Credit Card Code required");
    }
}