2014-10-28 76 views
0

我有以下類結構和所有類實現INotifyPropertyChangedWPF ItemsControl的數據綁定不工作

class University 
{ 
    List<Faculty> Faculties; 
} 

class Faculty 
{ 
    string Name; 
    List<Degree> Degrees; 
    bool IsSelected 
} 

class Degree 
{ 
    string Code; 
    List<Subject> Subjects 
    bool IsSelected 
} 

class Subject 
{ 
    string Nme; 
    string Code; 
    bool IsSelected 
} 

。 (小組將控制大學進行的當前課程)

我已經使用Itemcontol這個perpose。

在我的ViewModel中我有對象Current Faculty Faculty類型。我已經將CurrentFaculty綁定到我的XAML

以下是我的XAML代碼。

<ItemsControl Grid.Column="2" Grid.Row="0" ItemsSource="{Binding CurrentFaculty, Mode=TwoWay}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <CheckBox Margin="22,10,0,0" IsChecked="{Binding IsSelected, Mode=TwoWay}"> 
        <TextBlock Text="All"/> 
       </CheckBox> 
       <ItemsControl Grid.Column="2" Grid.Row="0" ItemsSource="{Binding Degrees, Mode=TwoWay}"> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <StackPanel> 
           <CheckBox Margin="22,10,0,0" IsChecked="{Binding IsSelected, Mode=TwoWay}"> 
            <TextBlock Text="{Binding Name, Mode=TwoWay}"/> 
           </CheckBox> 
           <ItemsControl ItemsSource="{Binding Subjects, Mode=TwoWay}"> 
            <ItemsControl.ItemTemplate> 
             <DataTemplate> 
              <CheckBox Margin="42,10,0,0" IsChecked="{Binding IsSelected, Mode=TwoWay}">            
               <TextBlock Text="{Binding Name}"></TextBlock> 
              </CheckBox> 
             </DataTemplate> 
            </ItemsControl.ItemTemplate> 
           </ItemsControl> 
          </StackPanel> 

         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl> 
      </StackPanel> 

     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

這是行不通的。這是什麼錯誤?

+1

你是否檢查過任何綁定錯誤的輸出窗口? – Mark 2014-10-28 12:11:14

回答

1

您不能將當前的教師作爲您的第一項itemscontrol的itemssource,因爲它只是一個對象而不是一個集合。無論如何,我不確定你爲什麼要嘗試。

如果您要用ContentControl替換父項itemscontrol,它應該像您期望的那樣工作,只要CurrentFaculty在視圖模型中正確設置,並且您的視圖datacontext已正確設置爲您的視圖模型即可。

<ContentControl Grid.Column="2" Grid.Row="0" Content="{Binding CurrentFaculty, Mode=TwoWay}"> 
     <ContentControl.ContentTemplate> 
      <DataTemplate> 
       <StackPanel> 
        <CheckBox Margin="22,10,0,0" IsChecked="{Binding IsSelected, Mode=TwoWay}"> 
         <TextBlock Text="All"/> 
        </CheckBox> 
        <ItemsControl Grid.Column="2" Grid.Row="0" ItemsSource="{Binding Degrees, Mode=TwoWay}"> 
         <ItemsControl.ItemTemplate> 
          <DataTemplate> 
           <StackPanel> 
            <CheckBox Margin="22,10,0,0" IsChecked="{Binding IsSelected, Mode=TwoWay}"> 
             <TextBlock Text="{Binding Name, Mode=TwoWay}"/> 
            </CheckBox> 
            <ItemsControl ItemsSource="{Binding Subjects, Mode=TwoWay}"> 
             <ItemsControl.ItemTemplate> 
              <DataTemplate> 
               <CheckBox Margin="42,10,0,0" IsChecked="{Binding IsSelected, Mode=TwoWay}"> 
                <TextBlock Text="{Binding Name}"></TextBlock> 
               </CheckBox> 
              </DataTemplate> 
             </ItemsControl.ItemTemplate> 
            </ItemsControl> 
           </StackPanel> 

          </DataTemplate> 
         </ItemsControl.ItemTemplate> 
        </ItemsControl> 
       </StackPanel> 

      </DataTemplate> 
     </ContentControl.ContentTemplate> 
    </ContentControl> 

這應該工作,我不能答應你什麼它顯示看起來不錯,但這取決於你。