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