我不理解我遇到的绑定原则错误,所以我很好奇:“TwoWay 或 OneWayToSource 绑定无法对“Demo.ViewModel.MainWindowViewModel”类型的只读属性“CurrentUser”起作用。我的 xaml 绑定正确,除了为组合框选择了默认值“SelectedValue”。现在,如果我使用 'SelectedValue = "1"' 而不是使用代码手动执行此属性,则该属性会很好。最终目标是我想从数据库中生成人员列表及其身份种子,这很好用。但我也想使用 Windows 登录然后为用户设置一个自动默认值。如果该属性可以工作,这将有效,但我猜我需要了解更多关于绑定规则的信息。有点像 WPF 绑定仅适用于某些类型和规则。
XAML:
<ComboBox Height="30" Width="170" Margin="10" x:Name="combopersons"
FontSize="20"
ItemsSource="{Binding Path=People}"
DisplayMemberPath="FirstName"
SelectedValuePath="PersonId"
SelectedValue="{Binding Path=CurrentUser}" />
viewmodel 代码的部分 C# 代码:
ReadOnlyCollection<Person> _people;
string _curuser;
public string CurrentUser
{
get
{
if (_curuser == null)
{
_curuser = "1";
}
return _curuser;
}
}
public ReadOnlyCollection<Person> People
{
get
{
if(_people == null)
{
List<Person> persns = this.GetPeople();
_people = new ReadOnlyCollection<Person>(persns);
}
return _people;
}
}
List<Person> GetPeople()
{
ExpensesEntities ee = new ExpensesEntities();
return ee.tePersons.Select(x => new Person
{
PersonId = x.PersonID,
FirstName = x.FirstName
}).ToList();
}