我已经玩了地图,我用它ScrollViewer在地图上移动,我希望ViewBox一起使用它PinchManipulations来放大和缩小地图.到目前为止,我已经通过设置这样做ScrollViewer的Manipulation模式control,但是这给了我一个滞后,当我放大.有没有办法让这个ViewBox和ScrollViewer更好地一起工作,从而避免滞后?我到目前为止的代码是:
ScrollViewer中:
<ScrollViewer Grid.Column ="0" Width="768" Height="380" HorizontalScrollBarVisibility="Hidden">
<Viewbox Stretch="None">
<View:Map/>
</Viewbox>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
PinchZoom:
<Grid x:Name="Map" Width="1271" Height="1381.5">
<Grid.RenderTransform>
<ScaleTransform ScaleX="{Binding Path=deltaZoom}" ScaleY="{Binding Path=deltaZoom}"/>
</Grid.RenderTransform>
<i:Interaction.Triggers>
<i:EventTrigger EventName="ManipulationStarted">
<cmd:EventToCommand Command="{Binding Path=ZoomStartedCommand}" PassEventArgsToCommand="True"/>
</i:EventTrigger>
<i:EventTrigger EventName="ManipulationDelta">
<cmd:EventToCommand Command="{Binding Path=ZoomDeltaCommand}" PassEventArgsToCommand="True"/>
</i:EventTrigger>
<i:EventTrigger EventName="ManipulationCompleted">
<cmd:EventToCommand Command="{Binding Path=ZoomCompletedCommand}" PassEventArgsToCommand="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我使用捏缩放的代码:
public ICommand ZoomStartedCommand { get; set; }
public ICommand ZoomDeltaCommand { get; set; } …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用GitLab,并创建了一组问题,以便概述我的应用程序需要做什么.我想知道是否有可能从这些问题创建一个分支,这样分支和问题是相互关联的,类似于jira和来自atlassian的Stash?
我已经测试了我的应用程序的内存使用情况,突然看到内存出现峰值,当我加载弹出窗口时,在我尝试关闭它之后它似乎没有下降.
我从第一页cs文件(我离开的那个)添加弹出窗口:
Popup popup;
if (!SecondScreen.SecondScreenLoaded)
{
Popup PopupTest = new Popup();
PopupTest.IsOpen = true;
LayoutRoot.Children.Add(PopupTest);
}
Run Code Online (Sandbox Code Playgroud)
当第二页完成后我希望删除弹出窗口,从而释放内存因此我不确定如何在c#中正确删除弹出窗口,有人可以告诉我这个吗?
我正在实现一个带有execute和canExecute部分的RelayCommand.RelayCommand在没有canExecute部分的情况下工作,但是当我添加canExecute部分时,该命令会锁定按钮.只要CanExecute部分为true,RelayCommand仅检查是否可以执行按钮.一旦canExecute部分变为false,就不能再单击该按钮,即使它应该被按下.我如何确保每次点击按钮它控制是否可以执行,并且一旦无法执行它就不会永久锁定它?
RedoCommand = new RelayCommand(undoRedoController.Redo,undoRedoController.CanRedo);
public bool CanRedo()
{
redoStack.Count();
redoStack.Any();
return redoStack.Any();
}
public void Redo()
{
if (redoStack.Count() <= 0) throw new InvalidOperationException();
IUndoRedoCommand command = redoStack.Pop();
undoStack.Push(command);
command.Execute();
}
public class UndoRedoController
{
private static UndoRedoController controller = new UndoRedoController();
private readonly Stack<IUndoRedoCommand> undoStack = new Stack<IUndoRedoCommand>();
private readonly Stack<IUndoRedoCommand> redoStack = new Stack<IUndoRedoCommand>();
private UndoRedoController() { }
public static UndoRedoController GetInstance() { return controller; }
Run Code Online (Sandbox Code Playgroud) 我正在使用ViewportControl滚动并放大和缩小我的地图.在这张地图中,我有一个绿色的椭圆形,我希望它能够移动.以前我使用ScrollViewer设置ScrollViewer的manipulationMode来控制,从而使它能够移动我的椭圆.但是我找不到类似于ViewportControl的方法.那么有一种方法可以移动我的椭圆吗?
我到目前为止的代码是:
我在我的地图周围有我的ViewportControl的xaml部分
<ViewportControl x:Name="ViewPortTestTest" Bounds="0,0,1271,1381.5" Height="480" Width="800" Canvas.ZIndex="1" Grid.Row="1">
<ViewportControl.RenderTransform>
<CompositeTransform x:Name="myTransformTest"/>
</ViewportControl.RenderTransform>
<View:Map x:Name="ZoomableContent" >
<View:Map.RenderTransform>
<CompositeTransform x:Name="myTransform" />
<!-- ScaleX="{Binding Map.imageScale}" ScaleY="{Binding Map.imageScale}"/>-->
</View:Map.RenderTransform>
</View:Map>
</ViewportControl>
Run Code Online (Sandbox Code Playgroud)
它是在我添加椭圆的地图中.我操纵椭圆的viewModel
public void ManStart(ManipulationStartedEventArgs e)
{
e.Handled = true;
ViewportControl VP = FindParentOfType<ViewportControl>(ChampViewModelSel);
}
}
public void ManDelta(ManipulationDeltaEventArgs e)
{
e.Handled = true;
Point fingerPosition = e.DeltaManipulation.Translation;
Temp.x = fingerPosition.X;
Temp.y = fingerPosition.Y;
}
}
Run Code Online (Sandbox Code Playgroud)
其中Temp.x和Temp.y是椭圆的新位置.
在 Visual Studio 2013 和 2015 中运行一段代码时,我得到两种不同的结果。在 Visual Studio 2015 上,我得到了一个 NullReference,在 2013 年它按应有的方式工作。此外,Visual Studio 2015 在 Windows 8.1 上的 Windows 10 和 2013 上运行。这段代码是:
private static T FindParentOfType<T>(DependencyObject o)
{
dynamic parent = VisualTreeHelper.GetParent(o);
return parent.GetType().IsAssignableFrom(typeof(T)) ? parent : FindParentOfType<T>(parent);
}
Run Code Online (Sandbox Code Playgroud)
代码是这样调用的:
Grid RiskGrid = FindParentOfType<Grid>(ChampViewModelSel);
Run Code Online (Sandbox Code Playgroud)
错误是Nullreference,当检查IsAssginableFrom,因为在VS2015找到一个帆布代替了在VS2013中找到的希望电网?
堆栈跟踪
Run Code Online (Sandbox Code Playgroud)StackTrace " at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetOriginalTypeParameterType(Type t)\r\n at Microsoft.CSharp.RuntimeBinder.SymbolTable.AreTypeParametersEquivalent(Type t1, Type t2)\r\n at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadMethodTypeParameter(MethodSymbol parent, Type t)\r\n at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType)\r\n at Microsoft.CSharp.RuntimeBinder.SymbolTable.AddMethodToSymbolTable(MemberInfo member, AggregateSymbol callingAggregate, MethodKindEnum kind)\r\n at Microsoft.CSharp.RuntimeBinder.SymbolTable.AddNamesInInheritanceHierarchy(String …
c# windows visual-studio visual-studio-2013 visual-studio-2015
c# ×4
wpf ×2
canexecute ×1
gitlab ×1
mvvm-light ×1
popup ×1
relaycommand ×1
scrollviewer ×1
silverlight ×1
viewport ×1
windows ×1
zoom ×1