悬停任务加入倒计时功能,必须有13架以上飞机,排好8字按从左到右从上到下的顺序设定好顺序
修改内部顺序号多了两个数的bug
This commit is contained in:
parent
412d0436bb
commit
5dc074fc0b
@ -471,7 +471,7 @@ namespace Plane.FormationCreator.Formation
|
|||||||
// added by ZJF
|
// added by ZJF
|
||||||
private void RestoreLoiterTimeTask(float LoiteTimeTmp, bool flashCheck, float flashCheckPeriod,
|
private void RestoreLoiterTimeTask(float LoiteTimeTmp, bool flashCheck, float flashCheckPeriod,
|
||||||
bool oneByOneCheck, float oneByOneCheckPeriod, string flashNameArray, string flashIndexArray,
|
bool oneByOneCheck, float oneByOneCheckPeriod, string flashNameArray, string flashIndexArray,
|
||||||
bool ChangeYaw, float HeadYaw,
|
bool ChangeYaw, float HeadYaw,bool numberShow,
|
||||||
dynamic singleCopterInfos)
|
dynamic singleCopterInfos)
|
||||||
{
|
{
|
||||||
var copters = _copterManager.Copters;
|
var copters = _copterManager.Copters;
|
||||||
@ -491,6 +491,8 @@ namespace Plane.FormationCreator.Formation
|
|||||||
loiterTimeTask.flashCopterIndexArray = flashIndexArray;
|
loiterTimeTask.flashCopterIndexArray = flashIndexArray;
|
||||||
loiterTimeTask.ChangeYaw = ChangeYaw;
|
loiterTimeTask.ChangeYaw = ChangeYaw;
|
||||||
loiterTimeTask.HeadYaw = HeadYaw;
|
loiterTimeTask.HeadYaw = HeadYaw;
|
||||||
|
loiterTimeTask.numberShow = numberShow;
|
||||||
|
|
||||||
|
|
||||||
// foreach (var copter in copters)
|
// foreach (var copter in copters)
|
||||||
for (int i=0; i < copters.Count && i < singleCopterInfos.Count; i++)
|
for (int i=0; i < copters.Count && i < singleCopterInfos.Count; i++)
|
||||||
@ -655,6 +657,7 @@ namespace Plane.FormationCreator.Formation
|
|||||||
flashIndexArray = task.flashCopterIndexArray,
|
flashIndexArray = task.flashCopterIndexArray,
|
||||||
ChangeYaw = task.ChangeYaw,
|
ChangeYaw = task.ChangeYaw,
|
||||||
HeadYaw = task.HeadYaw,
|
HeadYaw = task.HeadYaw,
|
||||||
|
numberShow= task.numberShow,
|
||||||
|
|
||||||
|
|
||||||
singleCopterInfos = task.SingleCopterInfos.Select(info =>
|
singleCopterInfos = task.SingleCopterInfos.Select(info =>
|
||||||
@ -754,7 +757,7 @@ namespace Plane.FormationCreator.Formation
|
|||||||
case FlightTaskType.Loiter:
|
case FlightTaskType.Loiter:
|
||||||
RestoreLoiterTimeTask((float)task.loiterTimeAttr, (bool)task.flashCheck, (float)task.flashCheckPeriod,
|
RestoreLoiterTimeTask((float)task.loiterTimeAttr, (bool)task.flashCheck, (float)task.flashCheckPeriod,
|
||||||
(bool)task.oneByOneCheck, (float)task.oneByOneCheckPeriod, (string)task.flashNameArray,
|
(bool)task.oneByOneCheck, (float)task.oneByOneCheckPeriod, (string)task.flashNameArray,
|
||||||
(string)task.flashIndexArray, (bool)task.ChangeYaw, (float)task.HeadYaw, task.singleCopterInfos);
|
(string)task.flashIndexArray, (bool)task.ChangeYaw, (float)task.HeadYaw , (bool)task.numberShow, task.singleCopterInfos);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case FlightTaskType.SimpleCircle:
|
case FlightTaskType.SimpleCircle:
|
||||||
@ -795,7 +798,7 @@ namespace Plane.FormationCreator.Formation
|
|||||||
case FlightTaskType.Loiter:
|
case FlightTaskType.Loiter:
|
||||||
RestoreLoiterTimeTask( (float)task.loiterTimeAttr, (bool)task.flashCheck, (float)task.flashCheckPeriod,
|
RestoreLoiterTimeTask( (float)task.loiterTimeAttr, (bool)task.flashCheck, (float)task.flashCheckPeriod,
|
||||||
(bool)task.oneByOneCheck, (float)task.oneByOneCheckPeriod, (string)task.flashNameArray,
|
(bool)task.oneByOneCheck, (float)task.oneByOneCheckPeriod, (string)task.flashNameArray,
|
||||||
(string)task.flashIndexArray, (bool)task.ChangeYaw, (float)task.HeadYaw, task.singleCopterInfos);
|
(string)task.flashIndexArray, (bool)task.ChangeYaw, (float)task.HeadYaw, (bool)task.numberShow, task.singleCopterInfos);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case FlightTaskType.SimpleCircle:
|
case FlightTaskType.SimpleCircle:
|
||||||
@ -815,7 +818,7 @@ namespace Plane.FormationCreator.Formation
|
|||||||
|
|
||||||
// 在悬停任务时,左键waypoint为选中
|
// 在悬停任务时,左键waypoint为选中
|
||||||
// 在悬停任务模式,且LED控制被选中时
|
// 在悬停任务模式,且LED控制被选中时
|
||||||
if ((this.SelectedTask.TaskType == FlightTaskType.Loiter) && (this.SelectedTask.flashAttr || this.SelectedTask.oneByOneAttr))
|
if ((this.SelectedTask.TaskType == FlightTaskType.Loiter) && (this.SelectedTask.flashAttr || this.SelectedTask.oneByOneAttr|| this.SelectedTask.numberShow))
|
||||||
{
|
{
|
||||||
string copterNameStr = this.SelectedTask.flashCopterNameArray;
|
string copterNameStr = this.SelectedTask.flashCopterNameArray;
|
||||||
|
|
||||||
@ -836,12 +839,12 @@ namespace Plane.FormationCreator.Formation
|
|||||||
if (copterArray[0].Equals(""))
|
if (copterArray[0].Equals(""))
|
||||||
{
|
{
|
||||||
this.SelectedTask.flashCopterNameArray += copter.Name;
|
this.SelectedTask.flashCopterNameArray += copter.Name;
|
||||||
SelectedTask.flashCopterIndexArray += Name2Index(copter.Name);
|
// SelectedTask.flashCopterIndexArray += Name2Index(copter.Name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.SelectedTask.flashCopterNameArray += "," + copter.Name;
|
this.SelectedTask.flashCopterNameArray += "," + copter.Name;
|
||||||
SelectedTask.flashCopterIndexArray += "," + Name2Index(copter.Name);
|
// SelectedTask.flashCopterIndexArray += "," + Name2Index(copter.Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,18 @@
|
|||||||
using System;
|
using GalaSoft.MvvmLight.Command;
|
||||||
|
using Plane.Windows.Messages;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Input;
|
||||||
|
|
||||||
namespace Plane.FormationCreator.Formation
|
namespace Plane.FormationCreator.Formation
|
||||||
{
|
{
|
||||||
public partial class FlightTask
|
public partial class FlightTask
|
||||||
{
|
{
|
||||||
private float _LoiterTimeAttr = 0.0f;
|
private float _LoiterTimeAttr = 0.0f;
|
||||||
|
private bool numberisend = false;
|
||||||
public float LoiterTimeAttr
|
public float LoiterTimeAttr
|
||||||
{
|
{
|
||||||
get { return _LoiterTimeAttr; }
|
get { return _LoiterTimeAttr; }
|
||||||
@ -18,6 +22,86 @@ namespace Plane.FormationCreator.Formation
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ICommand _NumberCommand5;
|
||||||
|
public ICommand NumberCommand5
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _NumberCommand5 ?? (_NumberCommand5 = new RelayCommand<double>(async =>
|
||||||
|
{
|
||||||
|
LEDNumberAsync(numberfive);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ICommand _NumberCommand4;
|
||||||
|
public ICommand NumberCommand4
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _NumberCommand4 ?? (_NumberCommand4 = new RelayCommand<double>(async =>
|
||||||
|
{
|
||||||
|
LEDNumberAsync(numberFour);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private ICommand _NumberCommand3;
|
||||||
|
public ICommand NumberCommand3
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _NumberCommand3 ?? (_NumberCommand3 = new RelayCommand<double>(async =>
|
||||||
|
{
|
||||||
|
LEDNumberAsync(numberthree);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private ICommand _NumberCommand2;
|
||||||
|
public ICommand NumberCommand2
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _NumberCommand2 ?? (_NumberCommand2 = new RelayCommand<double>(async =>
|
||||||
|
{
|
||||||
|
LEDNumberAsync(numbertwo);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private ICommand _NumberCommand1;
|
||||||
|
public ICommand NumberCommand1
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _NumberCommand1 ?? (_NumberCommand1 = new RelayCommand<double>(async =>
|
||||||
|
{
|
||||||
|
LEDNumberAsync(numberone);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private ICommand _NumberCommand0;
|
||||||
|
public ICommand NumberCommand0
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _NumberCommand0 ?? (_NumberCommand0 = new RelayCommand<double>(async =>
|
||||||
|
{
|
||||||
|
LEDNumberAsync(numberzero);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private ICommand _NumberCommandok;
|
||||||
|
public ICommand NumberCommandok
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _NumberCommandok ?? (_NumberCommandok = new RelayCommand<double>(async =>
|
||||||
|
{
|
||||||
|
numberisend = true;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -32,6 +116,20 @@ namespace Plane.FormationCreator.Formation
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 数字倒计时 要设定13架飞机
|
||||||
|
private bool _numberShow = false;
|
||||||
|
public bool numberShow
|
||||||
|
{
|
||||||
|
get { return _numberShow; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
Set(nameof(numberShow), ref _numberShow, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 机头方向0为北,顺时针360
|
// 机头方向0为北,顺时针360
|
||||||
private float _HeadYaw = 1.0f;
|
private float _HeadYaw = 1.0f;
|
||||||
public float HeadYaw
|
public float HeadYaw
|
||||||
@ -94,7 +192,10 @@ namespace Plane.FormationCreator.Formation
|
|||||||
|
|
||||||
for (int i = 0; i < copterArray.Length; i++)
|
for (int i = 0; i < copterArray.Length; i++)
|
||||||
{
|
{
|
||||||
flashCopterIndexArray += Name2Index(copterArray[i])+',';
|
flashCopterIndexArray += Name2Index(copterArray[i]);
|
||||||
|
//最后一个编号不要加","
|
||||||
|
if (i!= (copterArray.Length-1))
|
||||||
|
flashCopterIndexArray += ',';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -167,9 +268,22 @@ namespace Plane.FormationCreator.Formation
|
|||||||
private int[] lineNine = { 20, 26 };
|
private int[] lineNine = { 20, 26 };
|
||||||
private int[] lineTen = { 25 };
|
private int[] lineTen = { 25 };
|
||||||
|
|
||||||
|
|
||||||
|
private int[] numberfive = { 0, 1, 2, 3, 5, 6, 7, 9,10,11, 12 };
|
||||||
|
private int[] numberFour = { 0, 2, 3, 4, 5, 6, 7, 9, 12 };
|
||||||
|
private int[] numberthree = { 0, 1, 2, 4, 5, 6, 7, 9, 10, 11, 12 };
|
||||||
|
private int[] numbertwo = { 0, 1, 2, 4, 5, 6, 7, 8, 10, 11, 12 };
|
||||||
|
private int[] numberone = { 2, 4, 7, 9, 12 };
|
||||||
|
private int[] numberzero = { 0, 1, 2, 3, 4,5, 7, 8,9, 10, 11, 12 };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public async Task RunLoiterTimeTaskAsync()
|
public async Task RunLoiterTimeTaskAsync()
|
||||||
{
|
{
|
||||||
|
numberisend = false;
|
||||||
if (ChangeYaw)
|
if (ChangeYaw)
|
||||||
{
|
{
|
||||||
await Task.WhenAll(SingleCopterInfos.Select(info => SetCopterYawAsync(info,HeadYaw)));
|
await Task.WhenAll(SingleCopterInfos.Select(info => SetCopterYawAsync(info,HeadYaw)));
|
||||||
@ -200,8 +314,6 @@ namespace Plane.FormationCreator.Formation
|
|||||||
await LEDFlashParaModifyPlanAsync();
|
await LEDFlashParaModifyPlanAsync();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var infos = SingleCopterInfos;
|
var infos = SingleCopterInfos;
|
||||||
if (flashAttr) // LED闪烁显示效果
|
if (flashAttr) // LED闪烁显示效果
|
||||||
{
|
{
|
||||||
@ -289,6 +401,33 @@ namespace Plane.FormationCreator.Formation
|
|||||||
await Task.Delay((int)(LoiterTimeAttr * 1000)).ConfigureAwait(false);
|
await Task.Delay((int)(LoiterTimeAttr * 1000)).ConfigureAwait(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else if (numberShow) // LED数字倒计时,目前固定需要13架飞机,并且在跑马灯\数字顺序里设置13架飞机的顺序
|
||||||
|
{
|
||||||
|
if (flashCopterNameArray.Equals(""))
|
||||||
|
return;
|
||||||
|
string[] copterArray = flashCopterIndexArray.Split(',');
|
||||||
|
//没有13架
|
||||||
|
if (copterArray.Count()!=13)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//LED全灭
|
||||||
|
await Task.WhenAll(SingleCopterInfos.Select(info => LEDFlashTaskFlySingleCopterAsync(info, false)));
|
||||||
|
await Task.Delay(100).ConfigureAwait(false);
|
||||||
|
|
||||||
|
//判断是否下一步
|
||||||
|
while (! numberisend)
|
||||||
|
{
|
||||||
|
await Task.Delay(25).ConfigureAwait(false); //判断是否下一步20hz
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
else // 没有LED显示效果只等待
|
else // 没有LED显示效果只等待
|
||||||
{
|
{
|
||||||
await Task.Delay((int)(LoiterTimeAttr * 1000)).ConfigureAwait(false);
|
await Task.Delay((int)(LoiterTimeAttr * 1000)).ConfigureAwait(false);
|
||||||
@ -650,5 +789,54 @@ namespace Plane.FormationCreator.Formation
|
|||||||
await Task.WhenAll(tasks_selected).ConfigureAwait(false);
|
await Task.WhenAll(tasks_selected).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 显示LED数字
|
||||||
|
private async Task LEDNumberAsync(int[] Ledshowarray)
|
||||||
|
{
|
||||||
|
List<int> numberfivenew = new List<int>();
|
||||||
|
var infos = SingleCopterInfos;
|
||||||
|
|
||||||
|
if (flashCopterNameArray.Equals(""))
|
||||||
|
return;
|
||||||
|
string[] copterArray = flashCopterIndexArray.Split(',');
|
||||||
|
//没有13架
|
||||||
|
if (copterArray.Count() != 13)
|
||||||
|
return;
|
||||||
|
var tasks_selected = new Task[copterArray.Count()];
|
||||||
|
|
||||||
|
// 转换序号
|
||||||
|
for (int i = 0; i < copterArray.Length; i++)
|
||||||
|
{
|
||||||
|
if (copterArray[i] == "") break;
|
||||||
|
|
||||||
|
|
||||||
|
int index = int.Parse(copterArray[i]);
|
||||||
|
var info = infos[index];
|
||||||
|
|
||||||
|
|
||||||
|
if (Array.IndexOf(Ledshowarray, i) != -1)
|
||||||
|
{
|
||||||
|
|
||||||
|
tasks_selected[i] = await Task.Factory.StartNew(async () =>
|
||||||
|
{
|
||||||
|
var internalInfo = info;
|
||||||
|
await LEDFlashTaskFlySingleCopterAsync(internalInfo, true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
tasks_selected[i] = await Task.Factory.StartNew(async () =>
|
||||||
|
{
|
||||||
|
var internalInfo = info;
|
||||||
|
await LEDFlashTaskFlySingleCopterAsync(internalInfo, false);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
await Task.WhenAll(tasks_selected).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
</Style>
|
</Style>
|
||||||
</StackPanel.Resources>
|
</StackPanel.Resources>
|
||||||
|
|
||||||
<TextBlock Text="任务操作" FontWeight="Bold" />
|
<TextBlock Text="任务操作" FontWeight="Bold" />
|
||||||
|
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
|
|
||||||
@ -266,7 +266,7 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Margin="0,5,10,0"
|
Margin="0,5,10,0"
|
||||||
Text="{Binding TargetAlt, UpdateSourceTrigger=PropertyChanged}" />
|
Text="{Binding TargetAlt, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
@ -398,6 +398,7 @@
|
|||||||
<RowDefinition />
|
<RowDefinition />
|
||||||
<RowDefinition />
|
<RowDefinition />
|
||||||
<RowDefinition />
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition />
|
<ColumnDefinition />
|
||||||
@ -422,8 +423,8 @@
|
|||||||
<TextBox Grid.Column="1" Grid.Row="0"
|
<TextBox Grid.Column="1" Grid.Row="0"
|
||||||
Text="{Binding flashPeriodAttr, UpdateSourceTrigger=PropertyChanged}" />
|
Text="{Binding flashPeriodAttr, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<TextBlock Grid.Row="2" Grid.Column="0" Text="走马灯: " />
|
<TextBlock Grid.Row="2" Grid.Column="0" Text="走马灯/数字顺序: " />
|
||||||
<Grid Grid.Row="2" Grid.Column="1">
|
<Grid Grid.Row="2" Grid.Column="1">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition />
|
<RowDefinition />
|
||||||
@ -452,6 +453,77 @@
|
|||||||
IsChecked="{Binding ChangeYaw, UpdateSourceTrigger=PropertyChanged}" />
|
IsChecked="{Binding ChangeYaw, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
<TextBox Grid.Column="1" Grid.Row="0"
|
<TextBox Grid.Column="1" Grid.Row="0"
|
||||||
Text="{Binding HeadYaw, UpdateSourceTrigger=PropertyChanged}" />
|
Text="{Binding HeadYaw, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
|
</Grid>
|
||||||
|
<Grid Grid.Row="5" Grid.Column="0" Margin="0,0,28,0">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<CheckBox Grid.Row="0" Grid.Column="0"
|
||||||
|
IsChecked="{Binding numberShow, UpdateSourceTrigger=PropertyChanged}" Margin="0,5,0,0" />
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
|
||||||
|
<Grid Grid.Row="5" Grid.ColumnSpan="2" Margin="19,0,0,0">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Button Grid.Row="0" Grid.Column="0" Content="5"
|
||||||
|
Margin="0,5,0,0"
|
||||||
|
Command="{Binding NumberCommand5}" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Button Grid.Row="0" Grid.Column="1" Content="4"
|
||||||
|
Margin="0,5,0,0"
|
||||||
|
Command="{Binding NumberCommand4}" />
|
||||||
|
|
||||||
|
<Button Grid.Row="0" Grid.Column="2" Content="3"
|
||||||
|
Margin="0,5,0,0"
|
||||||
|
Command="{Binding NumberCommand3}" />
|
||||||
|
|
||||||
|
<Button Grid.Row="0" Grid.Column="3" Content="2"
|
||||||
|
Margin="0,5,0,0"
|
||||||
|
Command="{Binding NumberCommand2}" />
|
||||||
|
|
||||||
|
<Button Grid.Row="0" Grid.Column="4" Content="1"
|
||||||
|
Margin="0,5,0,0"
|
||||||
|
Command="{Binding NumberCommand1}" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Button Grid.Row="0" Grid.Column="5" Content="0"
|
||||||
|
Margin="0,5,0,0"
|
||||||
|
Command="{Binding NumberCommand0}"
|
||||||
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Button Grid.Row="0" Grid.Column="6" Content="N"
|
||||||
|
Margin="0,5,0,0"
|
||||||
|
Command="{Binding NumberCommandok}"
|
||||||
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
Loading…
Reference in New Issue
Block a user