(& 일 동안이 percolate를 보낸 후 내 자신의 대답은 아래 참조) WPF에서 다음 시나리오를 달성하려고합니다.wpf datagridcomboboxcolumn의 IsSynchronizedWithCurrentItem을 사용합니다.
나는보고 추가 데이터 입력을 위해 데이터 행을 표시하는 DataGrid를 보유하고 있습니다. 새로운 앱이지만 기존 데이터가 있습니다.
과거에는 특정 분야에 데이터가 임의로 입력되어있었습니다. 이제 우리는 해당 필드의 값을 특정 목록으로 제한하려고합니다. 그래서 DataGridComboBoxColumn을 사용하고 있습니다. FWIW 나는 이것을 ComboBox가 포함 된 DataGridTemplateColumn으로 시도했다.
기존 값이 목록에없는 경우 런타임에이를 표시하려고합니다. 나는 그런 일이 일어나지 않는 것 같습니다. 내가 여기서 방대한 해결책 (모든 실패)을 시도한 것은 출발점으로 가장 논리적 인 해결책이다.
드롭 다운 값 목록은 "months"라는 Windows 리소스에 정의되어 있습니다.
<DataGridComboBoxColumn x:Name="frequencyCombo" MinWidth="100" Header="Frequency"
ItemsSource="{Binding Source={StaticResource months}}"
SelectedValueBinding="{Binding Path=Frequency,UpdateSourceTrigger=PropertyChanged}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="IsSynchronizedWithCurrentItem" Value="False" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
</DataGridComboBoxColumn>
값이 목록에 없으면 표시가 비어있는 것입니다. 런타임에 IsSynchronizedWithCurrentItem 요소가 실제로 False임을 확인했습니다. 내가 기대하는 것을하지 않는 것입니다.
아마도 나는 잘못된 길을 걷고 있습니다. 어쩌면 나는 콤보 박스와 함께 텍스트 박스를 사용해야 할 것이다. 아마도 XAML뿐만 아니라 일부 코드를 작성해야 할 수도 있습니다. 나는 여러 가지 일을 시도하면서 많은 시간을 보냈고 해결책을 정말로 고맙게 생각할 것입니다. 이 클래스 나 컨트롤을 사용하기 위해 몇 가지 제안을했지만 설명이 없으면 어떻게 사용합니까?.
감사합니다.
frequencyViewSource의 코드는 어떻게 생겼습니까? 나는 비슷한 것을하려고 노력하고있다. 콤보 상자에 표시하려는 객체 목록 내 목록이 있습니다. 하지만 ItemsSource = "{바인딩 소스 = {StaticResource frequencyViewSource}, TargetNullValue = ''} '부분이 나를 위해 일할 수 없습니다. – user1977591