<Combobox ItemsSource="{Binding Path=Delimiters}" DisplayMemberPath="Key"
SelectedValue="{Binding Path=SelectedDelimiter, UpdateSourceTrigger=PropertyChanged}" />
을 복용하지 뒤에 코드에서 선택한 값을 설정 .사전 개체와 콤보 상자를 바인딩하지만, XAML 여기</p> <p>에서 인스턴스화 내 콤보입니다 생성자에 채워 사전에 뷰 모델에 해당하는 바인딩입니다 효과
private IDictionary<string,string> _delimiters;
public IDictionary<string,string> Delimiters
{
get{return _delimiters;}
set{_delimiters = value; RaisePropertyChanged("Delimiters");}
}
private KeyValuePair <string, string> _selectedDelimiter;
public KeyValuePair <string, string> SelectedDelimiter
{
get{return _selectedDelimiter;}
set{
if(value.Key != _selectedDelimiter.Key || value.Value != _selectedDelimiter.Value)
{
var prevDelimiter = _selectedDelimiter;
_selectedDelimiter = value;
if(IllegalDelimiter.Contains(_selectedDelimiter)
{
MessageBox.Show("errror", "error");
_selectedDelmiter = prevDelimiter;
}
RaisePropertyChanged("SelectedDelimiter");
}
}
}
기본적으로 선택한 값을 다시 바인딩하는 데 문제가 있습니다. 사전 바인딩 된 점점 내가 UI 콤보 상자를 변경할 때 설정이 올바르게 발생시키는 것입니다. if 문에서 불법 구분 기호가 맞는지 여부를 확인하기 위해 선택한 값을 코드 배후의 원래 값으로 다시 설정하지만 콤보 상자에 채워지지 않습니다 (UI에서 get 접근자가 표시됨 참조). 그것의 likevalue 설정은 실제로 ui에 아무 것도하지 않습니다.
누군가 올바른 방향으로 나를 가리킬 수 있다면?
나는 비슷한 것을 직면하고 있습니다. 기억한다면 "세터에서 같은 속성을 업데이트하는 것"이 무엇을 의미하는지 알려 주실 수 있습니까? – Tany