2017-08-21 138 views
0

我有一個WPF窗體與他們中的一些GridViewColumns來顯示數據。但是,即使我在每列中設置Header屬性,標題也不會出現。GridViewColumnHeader沒有出現

XAML:

<Window x:Class="MyProject.ViewModel.MyClassView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:vm="clr-namespace:MyProject.ViewModel"   
     Title="Title" Height="210.4" Width="500" ResizeMode="NoResize" 
     WindowStartupLocation="CenterOwner" WindowStyle="ToolWindow"> 
    <Window.Resources> 
     <DataTemplate x:Key="tempA"> 
      <TextBlock Text="{Binding Path=dataA}"/> 
     </DataTemplate> 
     <DataTemplate x:Key="tempB"> 
      <TextBlock Text="{Binding Path=dataB}"/> 
     </DataTemplate> 
     <DataTemplate x:Key="tempC"> 
      <TextBlock Text="{Binding Path=dataC}"/> 
     </DataTemplate> 
    </Window.Resources> 
    <Grid Margin="5,5,5,5"> 
     <ListView x:Name="MyList" ItemsSource="{Binding MyDataCollection}" MouseDoubleClick="ListView_MouseDoubleClick"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn x:Name="colA" Header="Name" Width="100" CellTemplate="{StaticResource tempA}"/> 
        <GridViewColumn x:Name="colB" Header="Type" Width="100" CellTemplate="{StaticResource tempB}"/> 
        <GridViewColumn x:Name="colC" Header="Diameter" Width="100" CellTemplate="{StaticResource tempC}"/> 
       </GridView> 
      </ListView.View> 
     </ListView> 
    </Grid> 
</Window> 

代碼隱藏:

namespace MyProject.ViewModel 
{ 
    public partial class MyClassView : Window 
    { 
     public object SelectedItem = null; 

     public MyClassView() 
     { 
      InitializeComponent(); 
     } 

     private void ListView_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e) 
     { 
      SelectedItem = MyList.SelectedItem; 
     } 
    } 
} 

視圖模型:

namespace MyProject.ViewModel 
{ 
    public class MyViewModel : INotifyPropertyChanged 
    { 
     public string Type { get; set; } 
     public object MyDataCollection { get; set; } 

     public MyViewModel(object collection, string type) 
     { 
      Type = type; 
      MyDataCollection = collection; 
     } 

     internal void RaisePropertyChanged(string prop) 
     { 
      if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(prop)); } 
     } 
     public event PropertyChangedEventHandler PropertyChanged; 
    } 
} 

傳遞到視圖模型構造函數的對象被保證包含數據A,數據B和dataC等等。

有人可以解釋爲什麼我的GridView中的標題沒有出現?

+0

對我來說都按您的代碼顯示的列標題。你可以提供更多的細節 –

+0

這裏沒有更多的東西......這是一個獨立的窗口,它是從另一個窗口的子窗口生成的。幾乎沒有與它相關的代碼 - 只是一個構造函數和其他一些變量定義。 – bemailloux

+0

發佈您擁有的所有代碼 –

回答

0

嘗試使用DataGrid代替。

這將是這個樣子:

<DataGrid ItemsSource="{Binding MyDataCollection}" AutoGenerateColumns="False" > 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Name" Binding="{Binding Name}" IsReadOnly="True"/> 
     <DataGridComboBoxColumn Header="Type" ItemsSource="{Binding TypeList}" SelectedItemBinding="{Binding Type}"/> 
     ... 
    </DataGrid.Columns> 
</DataGrid>