我有一个TextBox,我有一个按钮。
文本框值绑定到我的视图模型。
我的按钮绑定到我的视图模型。
当用户点击该按钮时,我希望文字显示“是”'如果文本框为空。
一切似乎都有效,但触发器似乎没有调用更改。
这是我的用户界面:
<TextBox Name="txtFirstName"
Text="{Binding BookingWizard.CustomerRecord.FName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger Binding="{Binding BookingWizard.IsCustomerFNameValid}" Value="False">
<Setter Property="Text" Value="yes" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
我的视图模型:
public ICommand ValidateForm
{
get
{
if (_validateForm == null)
{
_validateForm = new BookingCommand(
param => Validate()
);
}
return _validateForm;
}
}
private void Validate()
{
if (CustomerRecord.FName.Trim()=="")
{
IsCustomerFNameValid = false;
}
else
{
IsCustomerFNameValid = true;
}
}
public bool IsCustomerFNameValid
{
get { return _IsCustomerFNameValid; }
set {
_IsCustomerFNameValid = value;
RaisePropertyChanged("IsCustomerFNameValid");
}
}
当我调试时,我可以看到IsCustomerFNameValid
设置为false,但文本框未显示“是”&#39;。
答案 0 :(得分:1)
您将文本直接设置为TextBlock标记的属性。这将覆盖样式中的任何值。将它移到样式本身:
<TextBox Name="txtFirstName">
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="Text" Value="{Binding BookingWizard.CustomerRecord.FName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<Style.Triggers>
<DataTrigger Binding="{Binding BookingWizard.IsCustomerFNameValid}" Value="False">
<Setter Property="Text" Value="yes" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>