2010-07-15 83 views
1

我有一個視圖,其中包含一個ItemsControl與一些文本框內顯示名稱和其他信息。在我的窗口中,我將視圖添加到窗口如下,並在窗口後面的代碼中,我將視圖的datacontext綁定到MainWindow Loaded事件中的視圖模型,如下所示ViewOwnerSideBar.DataContext = viewModel應用程序編譯,但是當我運行它我沒有獲取數據?我檢查了我的viewmodel,並且我收集的數據中有我返回的數據。有沒有人有任何如何做到這一點的好例子。我將在右側顯示側邊欄視圖和主視圖,以顯示所有者的詳細信息。Wpf綁定視圖到ViewModel添加到wpf窗口

這是我的看法

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/Resources/ColorsAndBrushes.xaml"/> 
      <ResourceDictionary Source="/Resources/DefaultStyles.xaml"/> 

     </ResourceDictionary.MergedDictionaries> 

    </ResourceDictionary> 

</UserControl.Resources> 

<DockPanel > 
    <ScrollViewer VerticalScrollBarVisibility="Auto" > 
     <ItemsControl Width="250" 
         VerticalAlignment="Stretch" 
         BorderThickness="0" 
         ItemsSource="{Binding Path=AllOwners}"> 
     <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <Grid Margin="2"> 
         <Border Margin="2 2 0 0" 
           CornerRadius="4" 
           Background="Gray" 
           Opacity=".5" /> 
         <Border BorderBrush="{StaticResource redBrush}" 
           BorderThickness="2" 
           CornerRadius="4" 
           Background="White" 
           Margin="0 0 2 2" 
           Padding="3"> 
          <Grid> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="Auto" /> 
            <ColumnDefinition /> 
           </Grid.ColumnDefinitions> 
           <Grid.RowDefinitions> 
            <RowDefinition /> 
            <RowDefinition /> 
            <RowDefinition /> 
           </Grid.RowDefinitions> 

           <TextBlock Grid.ColumnSpan="2" 
              FontWeight="Bold" 
              Text="{Binding FullName}" /> 

           <TextBlock Grid.Row="1" 
               Text=" FirstName: " /> 
           <TextBlock Grid.Row="1" 
               Grid.Column="1" 
               Text="{Binding FirstName}" /> 

           <TextBlock Grid.Row="2" 
               Text=" Email: " /> 
           <TextBlock Grid.Row="2" 
               Grid.Column="1" 
               Text="{Binding Email}" /> 
          </Grid> 
         </Border> 
         <Button Style="{StaticResource openButton}" /> 
        </Grid> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
    </ItemsControl> 
    </ScrollViewer> 
</DockPanel> 

這是我的窗口

<DockPanel> 

    <v:HeaderTopBar DockPanel.Dock="Top"></v:HeaderTopBar> 
     <!--<uc:SearchBar DockPanel.Dock="Top" />--> 

    <StatusBar DockPanel.Dock="Bottom"> 
     <StatusBarItem DockPanel.Dock="Right"> 
      <Slider x:Name="zoomSlider" 
        Width="125" 
        Value="1" 
        Minimum=".5" 
        Maximum="2" /> 
     </StatusBarItem> 

     <StatusBarItem DockPanel.Dock="Right"> 
      <TextBlock>Zoom:</TextBlock> 
     </StatusBarItem> 

     <StatusBarItem> 
      <TextBlock Text="{Binding StatusText}" /> 
     </StatusBarItem> 
    </StatusBar> 

    <Expander DockPanel.Dock="Left" 
       ExpandDirection="Right" 
       IsExpanded="True" 
       BorderThickness="0 1 1 1" 
       BorderBrush="Gray" 
       Margin="0 2 0 0" 
       Padding="2"> 
     <Expander.Header> 
      <TextBlock Text="Contacts" 
         FontSize="14" 
         FontWeight="Bold"> 
       <TextBlock.LayoutTransform> 
       <RotateTransform Angle="90" /> 
       </TextBlock.LayoutTransform> 
      </TextBlock> 
     </Expander.Header> 
     <v:OwnerSideBar/> 

    </Expander> 

    <TabControl x:Name="tabs" 
       Grid.Column="2" 
       Margin="5 0"> 
     <TabControl.LayoutTransform> 
      <ScaleTransform ScaleX="{Binding ElementName=zoomSlider, 
              Path=Value}" 
          ScaleY="{Binding ElementName=zoomSlider, 
              Path=Value}" /> 
     </TabControl.LayoutTransform> 
    </TabControl> 

</DockPanel> 

回答

1

首先,確保您綁定的AllOwners集合是ObservableCollection。

另外,執行時在Visual Studio中檢查輸出窗口,查找被捕獲的第一次機會異常。這將成爲你綁定問題出現的線索。

我喜歡在ItemControl上綁定到Items.Count屬性的View上放置一個textblock,以便您可以查看它是否綁定,並且不呈現任何內容或沒有正確綁定。

給ItemsControl的一個名字,然後把一個文本塊中:

<TextBlock Text="{Binding ElementName=itemControl1,Path=Items.Count}/> 
+0

我正在返回一個ObservableCollection。我今天會嘗試一下,看看它發生了什麼。謝謝你的幫助!非常感謝。 – spafa9 2010-07-16 13:17:43

+0

非常感謝您提供查看輸出窗口的建議。我確實有例外。它無法找到AllOwner集合,所以我沒有看着它。再次感謝你。 – spafa9 2010-07-16 13:38:36

0

這可能是一些你已經看了看,但你可能有約束力的錯字,你檢查你的輸出窗口,看看你獲取任何跟蹤消息?

我想我是盲目的,但我沒有看到你的用戶控件在第二個條目的xaml中的位置。

+0

這是我添加窗口視圖我有一些搞砸了,因爲我在ItemsControl上放了一個名字,並得到了計數,並有0,所以我的猜測是我已經綁定了viewModel的錯誤地點或收集不正確。我必須傳遞證書才能獲取數據,所以我必須將其綁定到代碼而不是xaml。 – spafa9 2010-07-20 14:07:07