C# 命令在wpf中的边界控制范围内无效
我正在将窗口拖动事件绑定到边界控件以移动窗口。属性是本地的:EnableDragHelper.EnableDrag=“True”您可以检查下面的设计C# 命令在wpf中的边界控制范围内无效,c#,wpf,C#,Wpf,我正在将窗口拖动事件绑定到边界控件以移动窗口。属性是本地的:EnableDragHelper.EnableDrag=“True”您可以检查下面的设计 <Border Grid.Row="0" BorderThickness="1" BorderBrush="Black" Background="#467EAF" Name="borderHeader" local:EnableDragHelper.EnableDrag="True">
<Border Grid.Row="0" BorderThickness="1" BorderBrush="Black" Background="#467EAF" Name="borderHeader" local:EnableDragHelper.EnableDrag="True">
<StackPanel Grid.Row="0" VerticalAlignment="Center">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" Content="{Binding InspectionHistoryModel.CurrentDateTime,Mode=TwoWay}" FontWeight="Bold" Foreground="White" FontSize="18" Margin="5,0,0,0"></Label>
<TextBlock Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left" Name="popupTaregetextblock" Margin="10,0,0,0" VerticalAlignment="Center">
<Hyperlink FontSize="20" Foreground="White" Command="{Binding ShowHideHeaderPopupCommand}" CommandParameter="onDuty"><TextBlock Text="{Binding InspectionHistoryModel.HeaderDutyText, Mode=TwoWay}" VerticalAlignment="Center" FontWeight="Bold" FontSize="18" Foreground="White"> </TextBlock></Hyperlink>
</TextBlock>
</Grid>
</StackPanel>
</Border>
超链接的Comamnd(放在边框内)不起作用。怎么可能呢?拖动代码是
private static void UIElementOnMouseMove(object sender, MouseEventArgs mouseEventArgs)
{
var uiElement = sender as UIElement;
if (uiElement != null)
{
if (mouseEventArgs.LeftButton == MouseButtonState.Pressed)
{
DependencyObject parent = uiElement;
int avoidInfiniteLoop = 0;
// Search up the visual tree to find the first parent window.
while ((parent is Window) == false)
{
parent = VisualTreeHelper.GetParent(parent);
avoidInfiniteLoop++;
if (avoidInfiniteLoop == 1000)
{
// Something is wrong - we could not find the parent window.
return;
}
}
var window = parent as Window;
if (window.WindowState == WindowState.Maximized)
{
var mouseX = mouseEventArgs.GetPosition(window).X;
var width = window.RestoreBounds.Width;
var x = mouseX - width / 2;
if (x < 0)
{
x = 0;
}
else
if (x + width > SystemParameters.PrimaryScreenWidth)
{
x = SystemParameters.PrimaryScreenWidth - width;
}
window.WindowState = WindowState.Normal;
window.Left = x;
window.Top = 0;
// window.Width = window.ActualWidth;
// window.Height = window.ActualHeight;
// window.Left = 0;
// window.Top = 0;
// window.WindowStartupLocation = WindowStartupLocation.Manual;
// window.WindowState = WindowState.Normal;
}
window.DragMove();
}
}
}
private static void UIElementOnMouseMove(对象发送方,MouseEventArgs MouseEventArgs)
{
var uiElement=发送方作为uiElement;
if(uiElement!=null)
{
if(mouseEventArgs.LeftButton==MouseButtonState.Pressed)
{
DependencyObject父元素=uiElement;
int avoidfiniteloop=0;
//向上搜索可视化树以查找第一个父窗口。
while((父窗口)==false)
{
父级=VisualTreeHelper.GetParent(父级);
AvoidFiniteLoop++;
如果(AvoidFiniteLoop==1000)
{
//出现问题-我们找不到父窗口。
返回;
}
}
var窗口=父窗口;
如果(window.WindowState==WindowState.Maximized)
{
var mouseX=mouseEventArgs.GetPosition(window).X;
变量宽度=window.RestoreBounds.width;
var x=鼠标x-宽度/2;
if(x<0)
{
x=0;
}
其他的
如果(x+width>SystemParameters.PrimaryScreenWidth)
{
x=SystemParameters.PrimaryScreenWidth—宽度;
}
window.WindowState=WindowState.Normal;
window.Left=x;
window.Top=0;
//window.Width=window.ActualWidth;
//window.Height=window.ActualHeight;
//window.Left=0;
//window.Top=0;
//window.WindowStartupLocation=WindowStartupLocation.Manual;
//window.WindowState=WindowState.Normal;
}
window.DragMove();
}
}
}
是否有任何绑定错误出现在“输出”控制台中?否,HyperLink命令不工作,其他命令工作正常。能否显示ShowHideHeaderPopupCommand的代码?我不确定拖放“UIElementOnMouseMove”代码是如何相关的?我已经修复了这个问题。请回答我的另一个问题。