WPF MVVM 패턴 응용 프로그램에 DataGrid가 있고 헤더에서 콤보 상자를 사용하여 모눈을 필터링하려고합니다. 모든 코드가 Window 클래스 (MVVM 아님)에있을 때이 작업을 수행 할 수 있지만 내 자신을 위해서 VM에 바인딩하여 동일한 결과를 얻으려고합니다.DataGrid의 ComboBox 머리글에 대한 바인딩
<DataGridTextColumn x:Name="transNameColumn" Binding="{Binding TransName}" Width="325">
<DataGridTextColumn.Header>
<ComboBox ItemsSource="{Binding oTran}" DisplayMemberPath="TransName" SelectedValuePath="UID"
HorizontalAlignment="Left" Width="315">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding Transmittal_ComboSelect}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
</DataGridTextColumn.Header>
이
데이터 격자가있는 문제는이 같은 모습을있는 (바인딩은 바로 위) :
<DataGridTextColumn x:Name="transNameColumn" Binding="{Binding TransName}" Width="325">
<DataGridTextColumn.Header>
<ComboBox ItemsSource="{Binding oTran}" DisplayMemberPath="TransName" SelectedValuePath="UID"
HorizontalAlignment="Left" Width="315">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding Transmittal_ComboSelect}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
</DataGridTextColumn.Header>
과 최고 수준의 그리드 여기에 XAML의 따라서 결합 됨 :
<Grid DataContext="{Binding}">
콤보 상자가 DataGrid 안에 있기 때문에 바인딩이 엉망이된다고 생각합니다. 콤보 박스를 자체 XAML과 함께 사용하면 잘 동작합니다. 그러나 헤더로 삽입 할 때 채워지지 않습니다 (그리고 이벤트 바인딩도 작동하지 않을 것이라고 생각합니다. 그러나 채워지지 않으므로 확인할 수 없으므로 선택할 방법이 없습니다).
감사합니다. 이전 단계에서 해당 행을 제거했다고 생각합니다 (비 MVVM에서 MVVM 버전으로 이식 할 때). 나는 천천히 DataContext가 무엇을하는지 이해하기 시작했다. –