1
나는 (공식적인 것)이 SelectionUnit="Cell"
입니다. 사용자가 셀을 선택하면 해당 행에 대한 행 세부 정보를 표시하려고합니다. 이것은 분명히 기본 동작이 아니며이를 수행하는 방법을 파악할 수 없습니다. 당신은프로그래밍 방식으로 RowDetails 표시
SelectionUnit="FullRow"
을 FullRow하는 SelectionUnit을 설정하거나 선택 이벤트를 처리하고 이벤트 처리에 대한 가시성을 설정할 수 있습니다
<UserControl x:Class="View.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="../AppResources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<DataGrid AutoGenerateColumns="False"
ItemsSource="{Binding Path=Fields}"
BorderBrush="Transparent"
HeadersVisibility="Column"
SelectionMode="Single"
SelectionUnit="Cell"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserSortColumns="False"
IsTextSearchEnabled="True"
x:Name="EntryGrid"
>
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" Width="Auto" IsReadOnly="True"/>
<DataGridTemplateColumn Header="Value" Width="Auto" x:Name="valueColumn" MinWidth="60" MaxWidth="90">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DisplayValue}" TextTrimming="CharacterEllipsis" ToolTip="{Binding Path=Text, RelativeSource={RelativeSource Self}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<DockPanel>
<ComboBox TabIndex="1" HorizontalAlignment="Stretch" VerticalAlignment="Center" SelectedValue="{Binding Path=Value, UpdateSourceTrigger=PropertyChanged}" SelectedValuePath="Value" ItemsSource="{Binding Path=FieldOptions}" Visibility="{Binding Path=FieldOptions, Converter={StaticResource EmptyCollectionIsInvisibleConverter}}" />
<TextBox TabIndex="2" Text="{Binding Value, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Stretch" Visibility="{Binding Path=FieldOptions, Converter={StaticResource NonEmptyCollectionIsInvisibleConverter}}"/>
</DockPanel>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Description" IsReadOnly="True" Width="*" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Description}" TextWrapping="Wrap" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Help}" />
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
</Grid>
</UserControl>
와우, 어떻게 알았지? DataGrid에 대한 정보가 거의없는 것처럼 보입니다. 내가 찾은 유용한 기사 나 샘플에 대한 링크를 제공해 주시면 감사하겠습니다. 그것은 아주 간단한 코드이며, 나는 결코 그것을 발견하지 못했을 것입니다. – notJim
저는 지난 2 개월 동안 DataGrid를 많이 사용했습니다. 나는 당신이 방금 말한 것을 정확히 발견했습니다 : 기초를 지나친 정보는 거의 없습니다. WPF Toolkit 소스로 들어가는 데 매우 유용합니다. – jrwren