Last active
April 5, 2024 13:12
-
-
Save tomestephens/6001372 to your computer and use it in GitHub Desktop.
A very simple example for using WPF to hide/show the row details on a DataGrid.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<UserControl x:Class="DataGridExample.Views.MainView" | |
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" | |
xmlns:converters="clr-namespace:DataGridExamples.Converters" | |
mc:Ignorable="d" | |
d:DesignHeight="300" d:DesignWidth="300"> | |
<UserControl.Resources> | |
<ResourceDictionary> | |
<DataTemplate x:Key="ExpandDetails"> | |
<ToggleButton Name="ShowDetails" | |
IsChecked="{Binding RelativeSource={RelativeSource AncestorType=DataGridRow}, | |
Path=DetailsVisibility, | |
Converter={converters:VisbilityToBooleanConverter}, | |
Mode=TwoWay}" | |
Margin="4" /> | |
</DataTemplate> | |
</ResourceDictionary> | |
</UserControl.Resources> | |
<DockPanel> | |
<!--<ContentControl x:Name="Ribbon" DockPanel.Dock="Top" />--> | |
<DataGrid | |
SelectionMode="Single" | |
HorizontalAlignment="Stretch" | |
VerticalAlignment="Stretch" | |
AutoGenerateColumns="False" | |
ItemsSource="{Binding AllUsers}" | |
CanUserAddRows="False" | |
CanUserDeleteRows="True" | |
IsReadOnly="True" | |
SelectedItem="{Binding SelectedUser}"> | |
<DataGrid.Columns> | |
<DataGridTemplateColumn Header="" CellTemplate="{StaticResource ExpandDetails}" Width="30" /> | |
<DataGridTextColumn Binding="{Binding Path=Id}" Header="Id" Width="1*" /> | |
<DataGridTextColumn Binding="{Binding Path=Username}" Header="Username" Width="6*" /> | |
<DataGridTextColumn Binding="{Binding Path=Role}" Header="Role" Width="2*" /> | |
</DataGrid.Columns> | |
<DataGrid.RowDetailsTemplate> | |
<DataTemplate> | |
<Border BorderThickness="2,0,0,0" Margin="30,0,0,0" Background="{StaticResource Neutral_Gray}" BorderBrush="Black"> | |
<StackPanel> | |
<TextBlock Text="User Permission" Margin="5" /> | |
<ListView ItemsSource="{Binding Permissions}" SelectionMode="Single" IsSynchronizedWithCurrentItem="True"> | |
<ListView.View> | |
<GridView> | |
<GridViewColumn Header="Module" DisplayMemberBinding="{Binding ModuleName}" /> | |
<GridViewColumn Header="Permission Level" DisplayMemberBinding="{Binding PermissionLevel}" /> | |
</GridView> | |
</ListView.View> | |
</ListView> | |
</StackPanel> | |
</Border> | |
</DataTemplate> | |
</DataGrid.RowDetailsTemplate> | |
</DataGrid> | |
</DockPanel> | |
</UserControl> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Windows; | |
using System.Windows.Data; | |
using System.Linq; | |
using System.Text; | |
namespace DataGridExample.Converters | |
{ | |
[System.Windows.Markup.MarkupExtensionReturnType(typeof(IValueConverter))] | |
public class VisbilityToBooleanConverter : BaseConverter, IValueConverter | |
{ | |
#region IValueConverter Members | |
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) | |
{ | |
return (Visibility)value == Visibility.Visible; | |
} | |
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) | |
{ | |
return (bool)value ? Visibility.Visible : Visibility.Collapsed; | |
} | |
#endregion | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment