Commit 46208651 authored by 潘栩锋's avatar 潘栩锋 🚴

添加 ResetAction, 按钮按下与复位 绑定功能

parent 850d97c6
......@@ -146,7 +146,7 @@ namespace MultiLayout.MainEdit
//异常
return;
}
WdDynAreaConfig w = new WdDynAreaConfig();
WdMenuConfig w = new WdMenuConfig();
w.Init(Items, idx, manager.serviceNames);
w.Owner = FLY.ControlLibrary.COMMON.GetWindow(this);
w.ShowDialog();
......
......@@ -32,17 +32,19 @@ namespace MultiLayout
public MainWindow()
{
InitializeComponent();
}
private async void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
//---------------------------------------------------------
//转到进度条页面
lp = new LoadingProgress();
PgLoading p = new PgLoading();
p.DataContext = lp;
NavigationService.Navigate(p);
}
private async void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
await Task.Delay(10);
await Task.Delay(100);
//---------------------------------------------------------
//加载 unity
container = new UnityContainer();
......
......@@ -47,7 +47,7 @@ namespace FLY.ControlLibrary
object dataContext = null;
do
{
if (dobj.GetType() == typeof(FrameworkElement))
if (dobj is FrameworkElement)
{
dataContext = (dobj as FrameworkElement).DataContext;
if (dataContext != null)
......
......@@ -77,6 +77,7 @@
<Compile Include="GraphScanCircular.xaml.cs">
<DependentUpon>GraphScanCircular.xaml</DependentUpon>
</Compile>
<Compile Include="ResetAction.cs" />
<Compile Include="UI.OSK\IVirtualKeyboard.cs" />
<Compile Include="UI.OSK\KeyboardBehavior.cs" />
<Compile Include="GraphScan.xaml.cs">
......@@ -251,6 +252,12 @@
<Version>3.2.5</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Project.FLY.Misc\MISC\Misc.csproj">
<Project>{5ee61ac6-5269-4f0f-b8fa-4334fe4a678f}</Project>
<Name>Misc</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
......
using Microsoft.Xaml.Behaviors;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
namespace FLY.ControlLibrary
{
/// <summary>
/// 后台添加功能,按钮按下 时 属性=true, 抬起属性=false
/// </summary>
public class ResetAction2 : IDisposable
{
/// <summary>
/// 对象
/// </summary>
public object obj;
/// <summary>
/// bool 属性
/// </summary>
public string propertyname;
/// <summary>
/// 按下时为 true
/// </summary>
public bool pressIsTrue;
UIElement uIElement;
/// <summary>
///
/// </summary>
/// <param name="uIElement"></param>
/// <param name="obj"></param>
/// <param name="propertyname"></param>
/// <param name="pressIsTrue"></param>
public ResetAction2(UIElement uIElement, object obj, string propertyname, bool pressIsTrue = true)
{
this.uIElement = uIElement;
this.obj = obj;
this.propertyname = propertyname;
this.pressIsTrue = pressIsTrue;
uIElement.PreviewMouseDown += UIElement_PreviewMouseDown;
uIElement.PreviewTouchDown += UIElement_PreviewTouchDown;
uIElement.PreviewMouseUp += UIElement_PreviewMouseUp;
uIElement.PreviewTouchUp += UIElement_PreviewTouchUp;
}
/// <summary>
///
/// </summary>
/// <param name="uIElement"></param>
/// <param name="obj"></param>
/// <param name="propertyname"></param>
/// <param name="pressIsTrue"></param>
public ResetAction2(UIElement uIElement, string propertyname, bool pressIsTrue = true)
{
this.uIElement = uIElement;
this.propertyname = propertyname;
this.pressIsTrue = pressIsTrue;
uIElement.PreviewMouseDown += UIElement_PreviewMouseDown;
uIElement.PreviewTouchDown += UIElement_PreviewTouchDown;
uIElement.PreviewMouseUp += UIElement_PreviewMouseUp;
uIElement.PreviewTouchUp += UIElement_PreviewTouchUp;
}
public void Dispose()
{
uIElement.PreviewMouseDown -= UIElement_PreviewMouseDown;
uIElement.PreviewTouchDown -= UIElement_PreviewTouchDown;
uIElement.PreviewMouseUp -= UIElement_PreviewMouseUp;
uIElement.PreviewTouchUp -= UIElement_PreviewTouchUp;
}
private void UIElement_PreviewTouchUp(object sender, TouchEventArgs e)
{
Up();
}
private void UIElement_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
Up();
}
private void UIElement_PreviewTouchDown(object sender, TouchEventArgs e)
{
Down();
}
private void UIElement_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
Down();
}
bool IsObjNull()
{
if (obj == null)
{
if (uIElement is FrameworkElement)
{
obj = (uIElement as FrameworkElement).DataContext;
if (obj == null)
return true;
}
else
{
return true;
}
}
return false;
}
void Down()
{
if (IsObjNull()) return;
if (pressIsTrue)
Misc.PropertiesManager.SetValue(obj, propertyname, true);
else
Misc.PropertiesManager.SetValue(obj, propertyname, false);
}
void Up()
{
if (IsObjNull()) return;
if (pressIsTrue)
Misc.PropertiesManager.SetValue(obj, propertyname, false);
else
Misc.PropertiesManager.SetValue(obj, propertyname, true);
}
}
/// <summary>
/// ResetAction2 的 XAML 版 ,附加行为。
/// 还没完成
/// </summary>
public class ResetBehavior : Behavior<UIElement>
{
public System.Windows.Data.Binding Binding { get; set; }
ResetAction2 resetAction = null;
public ResetBehavior()
{
}
protected override void OnAttached()
{
base.OnAttached();
UIElement dobj = AssociatedObject;
if (Binding != null && Binding.Path != null)
{
if (Binding.Source != null)
{
resetAction = new ResetAction2(dobj, Binding.Source, Binding.Path.Path);
}
else
{
var obj = COMMON.GetDataContext(dobj);
if (obj == null)
{
resetAction = new ResetAction2(dobj, Binding.Path.Path);
}
else
{
resetAction = new ResetAction2(dobj, obj, Binding.Path.Path);
}
}
}
}
protected override void OnDetaching()
{
base.OnDetaching();
if (resetAction != null)
{
resetAction.Dispose();
resetAction = null;
}
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment