ユーザーがTextBoxにテキストを入力すると、ListBoxのテキストが自動的に選択されるサンプルコードを準備していました。これまでのところ結果を達成していますが、大文字と小文字を区別しないマッチングはありません。これがコードです。
XAML
<StackPanel>
<TextBox Name="txt" />
<ListBox ItemsSource="{Binding Employees}" DisplayMemberPath="Name" SelectedValuePath="Name"
Height="100" SelectedValue="{Binding Text, ElementName=txt}" SelectedItem="{Binding SelectedEmployee}"/>
<Button Content="OK" Command="{Binding SaveCommand}" />
</StackPanel>
このXAMLを次のViewModelにバインドしています。
ViewModel
public class CheckViewModel : ViewModel.ViewModelBase
{
IList<Employee> employees;
Employee _selectedEmployee;
public CheckViewModel()
{
employees = new List<Employee>() {
new Employee(1, "Morgan"),
new Employee(2, "Ashwin"),
new Employee(3, "Shekhar"),
new Employee(5, "Jack"),
new Employee(5, "Jill")
};
}
public IList<Employee> Employees
{
get
{ return employees; }
}
public Employee SelectedEmployee
{
get
{ return _selectedEmployee; }
set
{
if (_selectedEmployee != value)
{
_selectedEmployee = value;
this.OnPropertyChanged("SelectedEmployee");
}
}
}
ICommand _saveCommand;
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new ViewModel.RelayCommand((p) =>
{
if(this._selectedEmployee != null)
MessageBox.Show(this._selectedEmployee.Name);
else
MessageBox.Show("None Selected");
},
(p) =>
{
return this._selectedEmployee != null;
});
}
return _saveCommand;
}
}
}
public class Employee
{
public Employee(int id, string name)
{
this.Name = name;
this.Id = id;
}
public string Name { get; set; }
public int Id { get; set; }
}
したがって、TextBoxに「Jack」と入力すると、選択が適切に行われます。しかし、大文字と小文字を「ジャック」に変更すると、選択は行われず、SelectedEmployeeはnullになります。確かに、比較では大文字と小文字が区別されますが、この動作をどのように変更できますか?
大文字と小文字を区別しないようにする方法を教えてください。