如果我想绑定一些已绑定到其他内容的属性,我该怎么办?
就我而言,我有一个带有TextBox的窗口。此TextBox的Text属性是绑定到它的selectedItem的组合框的数据。我的Window类有一个公共字符串属性,我想用TextBox中的任何值更新,所以我想用Text属性绑定数据,但正如我所说,它已经绑定了。
如何使用TextBox中的文本更新我的属性?它必须使用TextChanged的路由事件,还是可以通过Xaml进行?
还特别针对属性,你自己在window.cs中定义它们......如何将它们绑定到TextBox.Text?我尝试使用<Window>
声明来执行此操作,这意味着<Window MyProperty={Binding ...} />
但该属性在此处未被识别。为什么以及如何做?
答案 0 :(得分:2)
您可以使用MVVM模式轻松解决此问题。
视图模型:
public class ChooseCategoryViewModel : ViewModelBase
{
private string[] _categories =
{ "Fruit", "Meat", "Vegetable", "Cereal" };
public string[] Categories
{
get { return _categories; }
}
private string _selectedCategory;
public string SelectedCategory
{
get { return _selectedCategory; }
set
{
_selectedCategory = value;
OnPropertyChanged("SelectedCategory");
if (value != null && CategoryName != value)
CategoryName = value;
}
}
private string _categoryName;
public string CategoryName
{
get { return _categoryName; }
set
{
_categoryName = value;
OnPropertyChanged("CategoryName");
if (Categories.Contains(value))
{
SelectedCategory = value;
}
else
{
SelectedCategory = null;
}
}
}
}
XAML:
<ComboBox ItemsSource="{Binding Categories}"
SelectedItem="{Binding SelectedCategory}" />
<TextBox Text="{Binding CategoryName}" />