通常,单击某行时会显示行详细信息。我想禁用它,以便单击DataGrid行只是选择它但不显示行详细信息。我希望在用户单击行标题时显示行详细信息。我该怎么做?
答案 0 :(得分:3)
要在单击行时阻止某人获取说明,请将此属性添加到网格中:
<DataGrid Name="dgPrimary" RowDetailsVisibilityMode="Collapsed">
然后添加两个类型为ChangePropertyAction的行为,使用表达式混合是最简单的行为之一。
这是我将鼠标移到我的测试项目的datagrid dgPrimary上的时候。查看所有行描述是如何打开的
这是从blend到datagrid
<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>
以及加载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 ) )
} );