私が取得しているバインディング原則エラーを理解していないので、興味がありました:「TwoWay または OneWayToSource バインディングは、タイプ「Demo.ViewModel.MainWindowViewModel」の読み取り専用プロパティ「CurrentUser」では機能しません。私のxamlは、コンボボックスの選択されたデフォルト値「SelectedValue」を除いて正しくバインドされています。コードではなく「SelectedValue = "1"」で手動で行うと、この属性は問題ありません。最終的な目標は、データベースから人のリストとその ID シードを生成することであり、これは正常に機能します。しかし、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}" />
ビューモデル コードの部分的な 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();
}