completed basic function
This commit is contained in:
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">
|
||||||
|
|||||||
Reference in new issue
Block a user