我在wpf-mvvm应用程序中有一个可编辑的组合框。
我想在可编辑的组合框中为文本框添加边框。 (此边框将显示为红色..如果用户在组合框中键入一些无效条目。)
请帮忙。
<ComboBox ItemsSource="{Binding Path = ContractNumberList }" Width="90" IsEditable="True" SelectedItem="{Binding Path = ContractNumber,Mode=TwoWay}"
Text="{Binding Path = ContractNumber, UpdateSourceTrigger=LostFocus}">
</ComboBox>
编辑: 我需要的是覆盖我的可编辑组合框的项目模板。我知道一个可编辑的组合框将包含两个项目=&gt;文本框和列表。我需要在此文本框中添加边框。
答案 0 :(得分:1)
您可以使用ValidationRules,但我认为这将非常棘手,因为您必须将ContractNumberList传递给它以检查其有效性。更简单的方法是使ViewModel实现IDataErrorInfo
,为ValidatesOnDataErrors="True"
绑定设置Text
,然后从ViewModel进行有效性检查。它看起来与此类似
<ComboBox ItemsSource="{Binding Path=ContractNumberList}"
Width="90"
IsEditable="True"
SelectedItem="{Binding Path=ContractNumber,
Mode=TwoWay}"
Text="{Binding Path=ContractNumber,
UpdateSourceTrigger=LostFocus,
ValidatesOnDataErrors=True}"/>
查看模型
public class YourViewModel : IDataErrorInfo
{
// ...
public string ContractNumber
{
get;
set;
}
// etc.
#region IDataErrorInfo Members
public string Error
{
get { throw new NotImplementedException(); }
}
public string this[string columnName]
{
get
{
string returnValue = string.Empty;
if (columnName == "ContractNumber")
{
if (ContractNumberList.IndexOf(ContractNumber) < 0)
{
returnValue = "Invalid selection";
}
}
return returnValue;
}
}
#endregion
}
答案 1 :(得分:0)
您必须使用验证规则
以下是几个链接
http://msdn.microsoft.com/en-us/library/system.windows.controls.validationrule.aspx
http://www.codeproject.com/KB/WPF/wpfvalidation.aspx
http://www.wpftutorial.net/DataValidation.html