有一些是自己工作中的业务代码,这里只是做一个记录,防止忘记一些自己踩过的坑。主要是如何添加新行,如何控制cell中textedit的编辑状态等。
<editorView:InoEditorView
x:Class="FA.Platform.Business.ProjectAuthority.Views.UsersAndRolesCtrl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxci="http://schemas.devexpress.com/winfx/2008/xaml/core/internal"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
xmlns:editorView="clr-namespace:FA.Platform.DataModel.Business;assembly=FA.Platform.DataModel.Business"
xmlns:fa="https://www.inovance.com/fa"
xmlns:local="clr-namespace:FA.Platform.Business.ProjectAuthority.Views"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:templateselector="clr-namespace:FA.Platform.Business.ProjectAuthority.TemplateSelector"
xmlns:theme="clr-namespace:FA.Platform.Internal.UIStyles.ThemeColor;assembly=FA.Platform.Internal.UIStyles"
xmlns:tips="clr-namespace:FA.Platform.UIControls.Tips.Service;assembly=FA.Platform.UIControls"
xmlns:xc="clr-namespace:FA.Platform.Business.ProjectAuthority.Common"
d:DesignHeight="448"
d:DesignWidth="761"
mc:Ignorable="d">
<Control.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FA.Platform.Internal.UIStyles;component/Resource/ControlStyle.xaml" />
<ResourceDictionary Source="pack://application:,,,/FA.Platform.Internal.UIStyles;component/Resource/ButtonStyle.xaml" />
<ResourceDictionary Source="../Resources/AuthorityControlStyle.xaml" />
</ResourceDictionary.MergedDictionaries>
<templateselector:AddUserCellTemplateSelector x:Key="AddUserdt" />
<templateselector:AddRoleCellTemplateSelector x:Key="AddRoledt" />
<Style x:Key="UIShape.Up" TargetType="{x:Type Path}">
<Setter Property="Data" Value="F1 M 4,0 8,4 0,4 4,0 Z " />
<Setter Property="Fill" Value="Black" />
<Setter Property="Height" Value="6" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="Margin" Value="0,0,0,1" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Stretch" Value="Fill" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Width" Value="4" />
</Style>
<Style x:Key="UIShape.Down" TargetType="{x:Type Path}">
<Setter Property="Data" Value="F1 M 0,0 8,0 4,4 0,0 Z " />
<Setter Property="Fill" Value="Black" />
<Setter Property="Height" Value="6" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="Margin" Value="0,1,0,0" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Stretch" Value="Fill" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Width" Value="4" />
</Style>
<Style x:Key="GridSplitterStyle" TargetType="{x:Type GridSplitter}">
<Setter Property="Background" Value="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=BtnGridSplitter_Background}}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GridSplitter}">
<Border
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="36" />
<ColumnDefinition Width="4" />
<ColumnDefinition Width="36" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border
Grid.Column="1"
Height="8"
Background="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=BtnGridSplitter_BtnBackground}}">
<Path
Width="6"
Height="4"
Margin="15,2,15,2"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Fill="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_Foreground}}"
Style="{StaticResource UIShape.Down}" />
</Border>
<Border
Grid.Column="3"
Height="8"
Background="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=BtnGridSplitter_BtnBackground}}">
<Path
Width="6"
Height="4"
Margin="15,2,15,2"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Fill="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_Foreground}}"
Style="{StaticResource UIShape.Up}" />
</Border>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<DataTemplate x:Key="pwdCmb">
<Grid>
<ComboBox
x:Name="cmb"
Background="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_TableBackground}}"
BorderThickness="0"
IsDropDownOpen="{Binding RelativeSource={RelativeSource AncestorType=editorView:InoEditorView}, Path=DataContext.CmbDropDownOpen, Mode=OneWayToSource}"
IsEditable="False"
IsReadOnly="False">
<ComboBoxItem Width="294">
<ComboBoxItem.Template>
<ControlTemplate>
<Grid Background="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_Background}}">
<Grid.RowDefinitions>
<RowDefinition Height="17" />
<RowDefinition Height="20" />
<RowDefinition Height="4" />
<RowDefinition Height="20" />
<RowDefinition Height="16" />
<RowDefinition Height="46*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="76" />
<ColumnDefinition Width="88" />
<ColumnDefinition Width="56" />
<ColumnDefinition Width="8" />
<ColumnDefinition Width="56" />
<ColumnDefinition Width="9*" />
</Grid.ColumnDefinitions>
<TextBlock
Grid.Row="1"
Grid.Column="0"
HorizontalAlignment="Right"
Text="密码:" />
<TextBlock
Grid.Row="3"
Grid.Column="0"
HorizontalAlignment="Right"
Text="确认密码:" />
<PasswordBox
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="4"
Margin="0,0,8,0"
xc:PasswordHelper.Attach="True"
xc:PasswordHelper.Password="{Binding RelativeSource={RelativeSource AncestorType=editorView:InoEditorView}, Path=DataContext.CurrentNewPwd, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
BorderThickness="1"
PasswordChar="*">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand
Command="{Binding RelativeSource={RelativeSource AncestorType=editorView:InoEditorView}, Path=DataContext.CmdInputPasswordChangedCommand}"
EventName="PasswordChanged"
PassEventArgsToCommand="True" />
</dxmvvm:Interaction.Behaviors>
</PasswordBox>
<PasswordBox
Grid.Row="3"
Grid.Column="1"
Grid.ColumnSpan="4"
Margin="0,0,8,0"
xc:PasswordHelper.Attach="True"
xc:PasswordHelper.Password="{Binding RelativeSource={RelativeSource AncestorType=editorView:InoEditorView}, Path=DataContext.ConfirmPwd, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
BorderThickness="1"
PasswordChar="*">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand
Command="{Binding RelativeSource={RelativeSource AncestorType=editorView:InoEditorView}, Path=DataContext.CmdInputPasswordChangedCommand}"
EventName="PasswordChanged"
PassEventArgsToCommand="True" />
</dxmvvm:Interaction.Behaviors>
</PasswordBox>
<Label
Grid.Row="4"
Grid.Column="0"
Grid.ColumnSpan="6"
Height="1"
Margin="8,0,9,0"
VerticalAlignment="Bottom"
Background="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_BorderBrush}}" />
<Button
Grid.Row="5"
Grid.Column="2"
Margin="0,9,0,9"
Content="确认"
IsEnabled="{Binding RelativeSource={RelativeSource AncestorType=editorView:InoEditorView}, Path=DataContext.EnableBtn, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
Style="{StaticResource ButtonBlueBgStyle}"
Tag="{Binding RelativeSource={RelativeSource AncestorType={x:Type ComboBox}, Mode=FindAncestor}}">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand
Command="{Binding RelativeSource={RelativeSource AncestorType=editorView:InoEditorView}, Path=DataContext.EnsurePasswordCommand}"
EventName="Click"
PassEventArgsToCommand="True" />
</dxmvvm:Interaction.Behaviors>
</Button>
<Button
Grid.Row="5"
Grid.Column="4"
Margin="0,9,0,9"
Content="取消"
Style="{StaticResource ButtonWhiteBgStyle}"
Tag="{Binding RelativeSource={RelativeSource AncestorType={x:Type ComboBox}, Mode=FindAncestor}}">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand
Command="{Binding RelativeSource={RelativeSource AncestorType=editorView:InoEditorView}, Path=DataContext.CancelPasswordCommand}"
EventName="Click"
PassEventArgsToCommand="True" />
</dxmvvm:Interaction.Behaviors>
</Button>
</Grid>
</ControlTemplate>
</ComboBoxItem.Template>
</ComboBoxItem>
</ComboBox>
<TextBlock
Width="130"
HorizontalAlignment="Left"
Background="Transparent"
Text="{Binding Row.ShowPassword, Mode=TwoWay}" />
</Grid>
</DataTemplate>
<DataTemplate x:Key="NullUserName">
<TextBlock Name="PART_Editor" Text="<新增用户>" />
</DataTemplate>
<DataTemplate x:Key="UserName">
<dxe:TextEdit Name="PART_Editor" Text="{Binding Row.UserName, Mode=TwoWay}">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand
Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type editorView:InoEditorView}, Mode=FindAncestor}, Path=DataContext.CmbTextChangedCommand}"
EventName="EditValueChanged"
PassEventArgsToCommand="True" />
</dxmvvm:Interaction.Behaviors>
</dxe:TextEdit>
</DataTemplate>
<DataTemplate x:Key="NullPwdCmb">
<TextBlock Name="PART_Editor" />
</DataTemplate>
<DataTemplate x:Key="NUllComment">
<TextBlock Name="PART_Editor" />
</DataTemplate>
<DataTemplate x:Key="Comment">
<dxe:TextEdit Name="PART_Editor" Text="{Binding Row.Remark, Mode=TwoWay}">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand
Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type editorView:InoEditorView}, Mode=FindAncestor}, Path=DataContext.CmbRemarkChangedCommand}"
EventName="EditValueChanged"
PassEventArgsToCommand="True" />
</dxmvvm:Interaction.Behaviors>
</dxe:TextEdit>
</DataTemplate>
<DataTemplate x:Key="NullRoleName">
<TextBlock Name="PART_Editor" Text="<新增角色>" />
</DataTemplate>
<DataTemplate x:Key="RoleName">
<dxe:TextEdit Name="PART_Editor" Text="{Binding Row.RoleName, Mode=TwoWay}">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand
Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type editorView:InoEditorView}, Mode=FindAncestor}, Path=DataContext.CmbTextChangedCommand}"
EventName="EditValueChanged"
PassEventArgsToCommand="True" />
</dxmvvm:Interaction.Behaviors>
<dxe:TextEdit.Style>
<Style TargetType="dxe:TextEdit">
<Style.Triggers>
<DataTrigger Binding="{Binding Row.IsAdmin, Mode=TwoWay}" Value="True">
<Setter Property="Focusable" Value="False" />
<Setter Property="IsReadOnly" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</dxe:TextEdit.Style>
</dxe:TextEdit>
</DataTemplate>
<DataTemplate x:Key="NullRoleDescription">
<TextBlock Name="PART_Editor" />
</DataTemplate>
<DataTemplate x:Key="RoleDescription">
<dxe:TextEdit Name="PART_Editor" Text="{Binding Row.Description, Mode=TwoWay}" />
</DataTemplate>
<DataTemplate x:Key="NullRoleComment">
<TextBlock Name="PART_Editor" />
</DataTemplate>
<DataTemplate x:Key="RoleComment">
<dxe:TextEdit Name="PART_Editor" Text="{Binding Row.Remark, Mode=TwoWay}">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand
Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type editorView:InoEditorView}, Mode=FindAncestor}, Path=DataContext.CmbTextChangedCommand}"
EventName="EditValueChanged"
PassEventArgsToCommand="True" />
</dxmvvm:Interaction.Behaviors>
<dxe:TextEdit.Style>
<Style TargetType="dxe:TextEdit">
<Style.Triggers>
<DataTrigger Binding="{Binding Row.IsAdmin, Mode=TwoWay}" Value="True">
<Setter Property="Focusable" Value="False" />
<Setter Property="IsReadOnly" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</dxe:TextEdit.Style>
</dxe:TextEdit>
</DataTemplate>
</ResourceDictionary>
</Control.Resources>
<Grid>
<dx:DXTabControl Grid.Row="0">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand
Command="{Binding TabItemChangedCommand}"
EventName="SelectionChanged"
PassEventArgsToCommand="True" />
</dxmvvm:Interaction.Behaviors>
<!-- 用户管理界面 -->
<dx:DXTabItem Background="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_Background}}">
<dx:DXTabItem.Header>
<StackPanel Orientation="Horizontal">
<Image Source="{fa:SvgImage FA.Platform.Image.User}" />
<TextBlock Margin="2" Text="用户" />
</StackPanel>
</dx:DXTabItem.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="175" />
<RowDefinition Height="12" />
<RowDefinition Height="201*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition Height="28" />
<RowDefinition Height="24" />
<RowDefinition />
</Grid.RowDefinitions>
<Grid Grid.Row="0" Background="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_Background}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="28" />
<ColumnDefinition Width="28" />
<ColumnDefinition />
<ColumnDefinition Width="28" />
</Grid.ColumnDefinitions>
<dx:DXImage
Grid.Column="0"
Margin="4"
Source="{fa:SvgImage FA.Platform.Image.RolesRefresh}" />
<dx:DXImage
Grid.Column="1"
Margin="4"
Source="{fa:SvgImage FA.Platform.Image.UserRefresh}" />
<dx:DXImage
Grid.Column="3"
Margin="4"
Source="{fa:SvgImage FA.Platform.Image.UserWindow}" />
</Grid>
<Border
Grid.Row="1"
Background="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_Background}}"
BorderBrush="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_BorderBrush}}"
BorderThickness="0,1,0,0">
<TextBlock
Margin="6,0,0,0"
VerticalAlignment="Center"
Text="用户" />
</Border>
<dxg:GridControl
Grid.Row="2"
ItemsSource="{Binding UserCollection, Mode=TwoWay}"
SelectedItem="{Binding IsSelectedUserItem, Mode=TwoWay}"
SelectedItems="{Binding SelectedUserItemsCollection, Mode=TwoWay}"
SelectionMode="Row">
<dxg:GridControl.View>
<dxg:TableView
VerticalAlignment="Top"
AutoWidth="True"
EditorShowMode="MouseUpFocused"
NewItemRowPosition="Bottom"
ShowGroupPanel="False"
ShowHorizontalLines="True"
ShowIndicator="False"
ShowVerticalLines="True"
VerticalScrollbarVisibility="Auto">
<dxg:TableView.RowStyle>
<Style TargetType="dxg:RowControl">
<Setter Property="dxg:ToolTipHelper.ShowTooltip" Value="False" />
</Style>
</dxg:TableView.RowStyle>
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand
Command="{Binding DoubleClickUserCommand}"
EventName="RowDoubleClick"
PassEventArgsToCommand="True" />
<dxmvvm:EventToCommand
Command="{Binding UserRowRightClickCommand}"
EventName="MouseRightButtonDown"
PassEventArgsToCommand="True" />
</dxmvvm:Interaction.Behaviors>
</dxg:TableView>
</dxg:GridControl.View>
<dxg:GridControl.Columns>
<dxg:GridColumn
Width="16"
MaxWidth="16"
AllowResizing="false"
FixedWidth="True">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<dx:DXImage
Width="16"
Height="16"
VerticalAlignment="Center"
dx:SvgImageHelper.State="{Binding Path=(dx:ThemeManager.TreeWalker).ThemeName, RelativeSource={RelativeSource Self}}"
Source="{Binding Data.UserImage}">
<dx:WpfSvgPalette.Palette>
<dx:WpfSvgPalette>
<dx:WpfSvgPalette.States>
<dx:WpfSvgPalette x:Key="FALight">
<SolidColorBrush x:Key="Black" Color="Black" />
</dx:WpfSvgPalette>
<dx:WpfSvgPalette x:Key="FADark">
<SolidColorBrush x:Key="black" Color="White" />
</dx:WpfSvgPalette>
</dx:WpfSvgPalette.States>
</dx:WpfSvgPalette>
</dx:WpfSvgPalette.Palette>
</dx:DXImage>
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn
Width="279"
MaxWidth="279"
AllowFocus="True"
AllowResizing="false"
CellTemplateSelector="{StaticResource AddUserdt}"
FieldName="UserName"
FixedWidth="True"
Header="用户名" />
<dxg:GridColumn
Width="160"
MaxWidth="160"
AllowResizing="false"
CellTemplateSelector="{StaticResource AddUserdt}"
FieldName="ShowPassword"
FixedWidth="True"
Header="密码" />
<dxg:GridColumn
Width="160"
MaxWidth="160"
AllowResizing="false"
CellTemplateSelector="{StaticResource AddUserdt}"
FieldName="Remark"
FixedWidth="True"
Header="注释" />
</dxg:GridControl.Columns>
</dxg:GridControl>
</Grid>
<GridSplitter
Grid.Row="1"
HorizontalAlignment="Stretch"
Style="{StaticResource GridSplitterStyle}" />
<!-- 为用户分配角色界面 -->
<dx:DXTabControl Grid.Row="2">
<dx:DXTabItem Header="分配的角色">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="24" />
<RowDefinition />
</Grid.RowDefinitions>
<Border
Grid.Row="0"
Background="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_Background}}"
BorderBrush="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_BorderBrush}}"
BorderThickness="0,0,0,0">
<TextBlock
Margin="6,0,0,0"
VerticalAlignment="Center"
Text="分配的角色" />
</Border>
<dxg:GridControl Grid.Row="1" ItemsSource="{Binding UserRolesCollection, Mode=TwoWay}">
<dxg:GridControl.View>
<dxg:TableView
MaxHeight="1000"
VerticalAlignment="Top"
AutoWidth="True"
ShowGroupPanel="False"
ShowHorizontalLines="True"
ShowIndicator="False"
ShowVerticalLines="True"
VerticalScrollbarVisibility="Auto" />
</dxg:GridControl.View>
<dxg:GridControl.Columns>
<dxg:GridColumn Width="16" FixedWidth="True">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<dx:DXImage
Width="16"
Height="16"
VerticalAlignment="Center"
dx:SvgImageHelper.State="{Binding Path=(dx:ThemeManager.TreeWalker).ThemeName, RelativeSource={RelativeSource Self}}"
Source="{Binding Data.RoleImage}">
<dx:WpfSvgPalette.Palette>
<dx:WpfSvgPalette>
<dx:WpfSvgPalette.States>
<dx:WpfSvgPalette x:Key="FALight">
<SolidColorBrush x:Key="Black" Color="Black" />
</dx:WpfSvgPalette>
<dx:WpfSvgPalette x:Key="FADark">
<SolidColorBrush x:Key="black" Color="White" />
</dx:WpfSvgPalette>
</dx:WpfSvgPalette.States>
</dx:WpfSvgPalette>
</dx:WpfSvgPalette.Palette>
</dx:DXImage>
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn Header="分配给" ReadOnly="False">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Left" IsChecked="{Binding Row.IsChecked, Mode=TwoWay}" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn
FieldName="RoleName"
Header="名称"
ReadOnly="True" />
<dxg:GridColumn
FieldName="Description"
Header="描述"
ReadOnly="True" />
<dxg:GridColumn
FieldName="Remark"
Header="注释"
ReadOnly="True" />
</dxg:GridControl.Columns>
</dxg:GridControl>
</Grid>
</dx:DXTabItem>
</dx:DXTabControl>
</Grid>
</dx:DXTabItem>
<!-- 角色管理界面 -->
<dx:DXTabItem Background="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_Background}}">
<dx:DXTabItem.Header>
<StackPanel Orientation="Horizontal">
<Image Source="{fa:SvgImage FA.Platform.Image.Roles}" />
<TextBlock Margin="2" Text="角色" />
</StackPanel>
</dx:DXTabItem.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="175" />
<RowDefinition Height="12" />
<RowDefinition Height="201*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition Height="28" />
<RowDefinition Height="24" />
<RowDefinition />
</Grid.RowDefinitions>
<Grid Grid.Row="0" Background="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_Background}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="28" />
<ColumnDefinition Width="28" />
<ColumnDefinition />
<ColumnDefinition Width="28" />
</Grid.ColumnDefinitions>
<dx:DXImage
Grid.Column="0"
Margin="4"
Source="{fa:SvgImage FA.Platform.Image.RolesRefresh}" />
<dx:DXImage
Grid.Column="1"
Margin="4"
Source="{fa:SvgImage FA.Platform.Image.UserRefresh}" />
<dx:DXImage
Grid.Column="3"
Margin="4"
Source="{fa:SvgImage FA.Platform.Image.UserWindow}" />
</Grid>
<Border
Grid.Row="1"
Background="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_Background}}"
BorderBrush="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_BorderBrush}}"
BorderThickness="0,1,0,0">
<TextBlock
Margin="6,0,0,0"
VerticalAlignment="Center"
Text="角色" />
</Border>
<dxg:GridControl
Grid.Row="2"
ItemsSource="{Binding RolesCollection, Mode=TwoWay}"
SelectedItem="{Binding IsSelectedRoleItem, Mode=TwoWay}"
SelectedItems="{Binding SelectedRoleItemsCollection, Mode=TwoWay}"
SelectionMode="Row">
<dxg:GridControl.View>
<dxg:TableView
VerticalAlignment="Top"
AutoWidth="True"
EditorShowMode="MouseDownFocused"
NewItemRowPosition="Bottom"
ShowGroupPanel="False"
ShowHorizontalLines="True"
ShowIndicator="False"
ShowVerticalLines="True"
VerticalScrollbarVisibility="Auto">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand
Command="{Binding DoubleClickRoleCommand}"
EventName="RowDoubleClick"
PassEventArgsToCommand="True" />
<dxmvvm:EventToCommand
Command="{Binding RoleRowRightClickCommand}"
EventName="MouseRightButtonDown"
PassEventArgsToCommand="True" />
</dxmvvm:Interaction.Behaviors>
<dxg:TableView.InputBindings>
<KeyBinding Command="{Binding RemoveRoleRowsCommand}" Gesture="enter" />
</dxg:TableView.InputBindings>
</dxg:TableView>
</dxg:GridControl.View>
<dxg:GridControl.Columns>
<dxg:GridColumn Width="16" FixedWidth="True">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<dx:DXImage
Width="16"
Height="16"
VerticalAlignment="Center"
dx:SvgImageHelper.State="{Binding Path=(dx:ThemeManager.TreeWalker).ThemeName, RelativeSource={RelativeSource Self}}"
Source="{Binding Data.RoleImage}">
<dx:WpfSvgPalette.Palette>
<dx:WpfSvgPalette>
<dx:WpfSvgPalette.States>
<dx:WpfSvgPalette x:Key="FALight">
<SolidColorBrush x:Key="Black" Color="Black" />
</dx:WpfSvgPalette>
<dx:WpfSvgPalette x:Key="FADark">
<SolidColorBrush x:Key="black" Color="White" />
</dx:WpfSvgPalette>
</dx:WpfSvgPalette.States>
</dx:WpfSvgPalette>
</dx:WpfSvgPalette.Palette>
</dx:DXImage>
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn
CellTemplateSelector="{StaticResource AddRoledt}"
FieldName="RoleName"
Header="名称">
<!--<dxg:GridColumn.Style>
<Style TargetType="dxg:GridColumn">
<Style.Triggers>
<DataTrigger Binding="{Binding row.RoleName}" Value="管理员">
<Setter Property="ReadOnly" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</dxg:GridColumn.Style>-->
</dxg:GridColumn>
<dxg:GridColumn
CellTemplateSelector="{StaticResource AddRoledt}"
FieldName="Description"
Header="描述"
ReadOnly="True" />
<dxg:GridColumn
CellTemplateSelector="{StaticResource AddRoledt}"
FieldName="Remark"
Header="注释" />
</dxg:GridControl.Columns>
</dxg:GridControl>
</Grid>
<GridSplitter
Grid.Row="1"
HorizontalAlignment="Stretch"
Style="{StaticResource GridSplitterStyle}" />
<!-- 为角色分配权限 -->
<dx:DXTabControl Grid.Row="2">
<dx:DXTabItem Header="权限">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="24" />
<RowDefinition />
</Grid.RowDefinitions>
<Border
Grid.Row="0"
Background="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_Background}}"
BorderBrush="{dxci:ThemeResource {theme:ThemeResourcesThemeKey ResourceKey=Standard_BorderBrush}}"
BorderThickness="0,0,0,0">
<TextBlock
Margin="6,0,0,0"
VerticalAlignment="Center"
Text="分配权限" />
</Border>
<dxg:GridControl Grid.Row="1" ItemsSource="{Binding RoleAuthsCollection, Mode=TwoWay}">
<dxg:GridControl.View>
<dxg:TableView
MaxHeight="1000"
VerticalAlignment="Top"
AutoWidth="True"
ShowGroupPanel="False"
ShowHorizontalLines="True"
ShowIndicator="False"
ShowVerticalLines="True"
VerticalScrollbarVisibility="Auto" />
</dxg:GridControl.View>
<dxg:GridControl.Columns>
<dxg:GridColumn
Width="50"
FieldName="{x:Null}"
ReadOnly="False">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Row.IsChecked, Mode=TwoWay}" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn FieldName="名称" ReadOnly="True">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Row.Name}" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn FieldName="注释" ReadOnly="True">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Row.Remark}" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
</dxg:GridControl.Columns>
</dxg:GridControl>
</Grid>
</dx:DXTabItem>
</dx:DXTabControl>
</Grid>
</dx:DXTabItem>
</dx:DXTabControl>
</Grid>
</editorView:InoEditorView>