2012-01-06 88 views
2

當您點擊一行時,通常會顯示行詳細信息。我想禁用這個,這樣點擊一個DataGrid行就可以簡單地選擇它,但不顯示行的詳細信息。我想要在用戶單擊行標題時顯示行詳細信息。我將如何做到這一點?通過單擊行標題顯示DataGrid行詳細信息?

回答

2

要停止某人獲得當行被點擊一個說明會將此屬性添加到網格:

<DataGrid Name="dgPrimary" RowDetailsVisibilityMode="Collapsed"> 

然後一個補充型ChangePropertyAction的兩種行爲,使用Expression Blend的是最簡單的一個。

  1. 鼠標輸入動作
    Properties Window in Blend for Mouse Enter

  2. 鼠標假動作
    Properties Window in Blend for Mouse Leave

    這裏是在報頭中的鼠標移動之前的原始數據網格

    enter image description here



這是當我將鼠標移動到我的測試項目的datagrid dgPrimary上。瞭解所有行描述如何打開。
Result datagrid when mouse moves over it

下面是從混合上漲到數據網格

<DataGrid x:Name="dgPrimary" RowDetailsVisibilityMode="Collapsed"> 
    <DataGrid.RowDetailsTemplate> 
     <DataTemplate> 
      <StackPanel Margin="20,0,0,0" Orientation="Horizontal"> 
       <TextBlock FontWeight="Bold" Text="{Binding New}" /> 

      </StackPanel> 
     </DataTemplate> 
    </DataGrid.RowDetailsTemplate> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Original}" 
          Header="File Name Before" 
          IsReadOnly="True" /> 
     <DataGridTextColumn Binding="{Binding New}" 
          Header="File Name After" 
          IsReadOnly="True" /> 
    </DataGrid.Columns> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="MouseEnter"> 
      <ei:ChangePropertyAction PropertyName="RowDetailsVisibilityMode"> 
       <ei:ChangePropertyAction.Value> 
        <DataGridRowDetailsVisibilityMode>Visible</DataGridRowDetailsVisibilityMode> 
       </ei:ChangePropertyAction.Value> 
      </ei:ChangePropertyAction> 
     </i:EventTrigger> 
     <i:EventTrigger EventName="MouseLeave"> 
      <ei:ChangePropertyAction x:Name="cpaLeave" PropertyName="RowDetailsVisibilityMode"/> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</DataGrid> 

而後面的代碼來加載數據網格

dgPrimary.ItemsSource = Directory.GetFiles(@"C:\") 
            .Select((nm, index) => new 
            { 
             Original = System.IO.Path.GetFileName(nm), 
             New = string.Format("{0}_{1}{2}", System.IO.Path.GetFileNameWithoutExtension(nm), index, System.IO.Path.GetExtension(nm)) 
            }); 
代碼