我在WPF MVVM模式應用程序中有一個DataGrid,我試圖在標題中使用組合框來過濾網格。當所有代碼都在Window類(而不是MVVM)中時,我可以做到這一點,但爲了我自己的緣故,我試圖將它綁定到VM以獲得相同的結果。這裏的XAML: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>
和頂級網格因此被約束:
<Grid DataContext="{Binding}">
我在想,因爲組合框在數據網格內,綁定會搞砸。當我有自己的組合框時,使用相同的XAML,它可以正常工作。但是,當作爲標題插入它不會填充(我認爲事件綁定也將無法正常工作,但無法驗證,因爲它不會填充,因此無法進行選擇)。
謝謝,我會再補充一點。我認爲在之前的步驟中我已經刪除了該行(從非MVVM移植到MVVM版本時)。我慢慢開始明白DataContext正在做什麼。 – 2015-02-06 19:14:52