completed basic function

This commit is contained in:
NaBian committed 2019-05-03 22:14:25 +08:00
1 parent 0cd8529b6c
commit 145c47711f
5 files changed
+51 -14

No files matched your search

@@ -9,6 +9,8 @@ namespace HandyControl.Controls
private SideMenuItem _selectedHeader; private SideMenuItem _selectedHeader;
private bool _isItemSelected;
public SideMenu() public SideMenu()
{ {
AddHandler(SideMenuItem.SelectedEvent, new RoutedEventHandler(SideMenuItemSelected)); AddHandler(SideMenuItem.SelectedEvent, new RoutedEventHandler(SideMenuItemSelected));
@@ -27,17 +29,30 @@ namespace HandyControl.Controls
_selectedItem = item; _selectedItem = item;
_selectedItem.IsSelected = true; _selectedItem.IsSelected = true;
_isItemSelected = true;
} }
else else
{ {
if (_selectedHeader != null) if (!Equals(item, _selectedHeader))
{ {
_selectedHeader.IsSelected = false; if (_selectedHeader != null)
{
_selectedHeader.IsSelected = false;
}
_selectedHeader = item;
_selectedHeader.IsSelected = true;
} }
_selectedHeader = item; if (_isItemSelected)
_selectedHeader.IsSelected = true; {
_selectedHeader.SelectDefaultItem(_selectedItem); _isItemSelected = false;
}
else
{
_selectedHeader.SelectDefaultItem();
_isItemSelected = false;
}
} }
} }
} }
@@ -72,20 +72,16 @@ namespace HandyControl.Controls
if (_isMouseLeftButtonDown) if (_isMouseLeftButtonDown)
{ {
if (!IsSelected) IsSelected = true;
{ OnSelected(new RoutedEventArgs(SelectedEvent, this));
IsSelected = true;
OnSelected(new RoutedEventArgs(SelectedEvent, this));
}
_isMouseLeftButtonDown = false; _isMouseLeftButtonDown = false;
} }
} }
internal void SelectDefaultItem(SideMenuItem menuItem) internal void SelectDefaultItem()
{ {
if (Role == SideMenuItemRole.Header && ItemsHost.Children.Count > 0) if (Role == SideMenuItemRole.Header && ItemsHost.Children.Count > 0)
{ {
if (ItemsHost.Children.Contains(menuItem)) return;
var item = ItemsHost.Children.OfType<SideMenuItem>().FirstOrDefault(); var item = ItemsHost.Children.OfType<SideMenuItem>().FirstOrDefault();
if (item != null && !item.IsSelected) if (item != null && !item.IsSelected)
{ {
@@ -0,0 +1,25 @@
namespace HandyControl.Data.Enum
{
public enum ExpandMode
{
/// <summary>
/// 显示所有项,且不可折叠
/// </summary>
ShowAll,
/// <summary>
/// 最多只能显示一项,且不可折叠
/// </summary>
ShowOne,
/// <summary>
/// 类似ShowOne,但是控件的尺寸不随项的数量而改变
/// </summary>
Accordion,
/// <summary>
/// 没有任何限制
/// </summary>
Freedom
}
}
@@ -112,6 +112,7 @@
<Compile Include="$(MSBuildThisFileDirectory)Data\Enum\BadgeStatus.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Data\Enum\BadgeStatus.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Data\Enum\ChatMessageType.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Data\Enum\ChatMessageType.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Data\Enum\ChatRoleType.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Data\Enum\ChatRoleType.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Data\Enum\ExpandMode.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Data\Enum\InfoType.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Data\Enum\InfoType.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Data\Enum\IpType.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Data\Enum\IpType.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Data\Enum\ResultType.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Data\Enum\ResultType.cs" />
@@ -28,7 +28,7 @@
<Setter TargetName="PresenterIcon" Property="Visibility" Value="Collapsed"/> <Setter TargetName="PresenterIcon" Property="Visibility" Value="Collapsed"/>
</Trigger> </Trigger>
<DataTrigger Binding="{Binding IsSelected,RelativeSource={RelativeSource AncestorType=controls:SideMenuItem}}" Value="True"> <DataTrigger Binding="{Binding IsSelected,RelativeSource={RelativeSource AncestorType=controls:SideMenuItem}}" Value="True">
<Setter Property="BorderBrush" Value="{DynamicResource DarkOpacityBrush}"/> <Setter Property="BorderBrush" Value="{DynamicResource BorderBrush}"/>
</DataTrigger> </DataTrigger>
<Trigger Property="IsSelected" Value="True"> <Trigger Property="IsSelected" Value="True">
<Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}"/> <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}"/>
@@ -75,7 +75,7 @@
</Trigger> </Trigger>
<Trigger Property="IsSelected" Value="True"> <Trigger Property="IsSelected" Value="True">
<Setter TargetName="BorderBack" Property="BorderThickness" Value="4,0,0,0"/> <Setter TargetName="BorderBack" Property="BorderThickness" Value="4,0,0,0"/>
<Setter TargetName="BorderBack" Property="BorderBrush" Value="{DynamicResource DarkOpacityBrush}"/> <Setter TargetName="BorderBack" Property="BorderBrush" Value="{DynamicResource BorderBrush}"/>
<Setter Property="TextElement.FontWeight" Value="Bold" TargetName="PresenterHeader"/> <Setter Property="TextElement.FontWeight" Value="Bold" TargetName="PresenterHeader"/>
</Trigger> </Trigger>
<Trigger SourceName="PanelHeader" Property="IsMouseOver" Value="true"> <Trigger SourceName="PanelHeader" Property="IsMouseOver" Value="true">