我设置了1个文本框和1个组合框,在运行程序时,首先将焦点置于文本框,当我按tab键将焦点置于组合框时,出现以下错误:
“InvalidOperationException: 'validationTooltip'名称在'System.Windows.Controls.ToolTip'的名称范围内找不到。”
为了帮助您帮助我,这里是我的XAML部分:
<Window.DataContext>
<ViewModels:MainWindowViewModel/>
</Window.DataContext>
<!-- Batch ID-->
<Label Content="Batch ID"
Height="28"
Margin="64,52,191,0" VerticalAlignment="Top" />
<TextBox Name="txtBatchId"
Text="{Binding BatchId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
Margin="124,52,65,0" TabIndex="1" Height="26" VerticalAlignment="Top" />
<!-- Product -->
<Label Content="Product"
Height="28" Margin="54,81,191,0" VerticalAlignment="Top" />
<ComboBox Name="cmbProduct"
ItemsSource="{Binding Products}"
DisplayMemberPath="ProductName"
SelectedValuePath="ProductId"
SelectedValue="{Binding SelecteProductId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
Height="23" Margin="124,81,65,0" VerticalAlignment="Top" TabIndex="2" />
以下是在数据绑定组合框中使用的ProductModel.cs:
这是在数据绑定组合框中使用的ProductModel.cs
:
public class ProductModel
{
public int ProductId {get;set;}
public int ProductName {get;set;}
public ProductModel(int prodId, string prodName)
{
ProductId = prodIdl;
ProductName = prodName;
}
}
这里是实现了INotifyPropertyChanged和IDataErrorInfo的MainWindowViewModel.cs
代码:
public class MainWindowViewModel : ViewModelBase, IDataErrorInfo
{
private string _batchId;
public string BatchId
{
get { return _batchId; }
set
{
_batchId = value;
OnPropertyChanged("BatchId");
}
}
private ObservableCollection<Product> _products = new ObservableCollection<Product>();
public IEnumerable<Product> Products {
get { return _products; }
}
private string _selectedProductId;
public string SelectedProductId
{
get { return _selectedProductId; }
set
{
_selectedProductId = value;
OnPropertyChanged("SelectedProductId");
}
}
public void PopulateProduct() {
....
}
public MainWindowViewModel()
{
PopulateProduct();
}
public string this[string columnName]
{
get
{
string result = string.Empty;
switch (columnName)
{
case "SelectedProductId":
if (SelectedProductId == null || SelectedProductId == "0")
{
result = "Please select a product";
}
break;
case "BatchId":
if (string.IsNullOrWhitespace(BatchId))
{
result = "Please input batch id";
}
break;
}
return result;
}
}
public string Error { get; private set; }
}
非常感谢您的帮助。请让我知道我可以做些什么来使它更加清晰易懂。