sách gpt4 ai đã đi

wpf - 元素移动时绑定(bind)到 Canvas.Left 会中断

In lại 作者:行者123 更新时间:2023-12-04 23:29:25 27 4
mua khóa gpt4 Nike

我有以下具有 3 个元素的 Canvas:

            



Y1="{Binding ConverterParameter=Y, ElementName=start, Converter={StaticResource CanvasPositionConverter}}"
X2="{Binding ConverterParameter=X, ElementName=root, Converter={StaticResource CanvasPositionConverter}}"
Y2="{Binding ConverterParameter=Y, ElementName=root, Converter={StaticResource CanvasPositionConverter}}"
Stroke="Red" StrokeThickness="2" />




CanvasPositionConverter 是这样的:
   public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{

if (parameter.ToString().ToLower() == "x")

return Canvas.GetLeft(value as FrameworkElement);

else if (parameter.ToString().ToLower() == "y")

return Canvas.GetTop(value as FrameworkElement);


else throw new Exception("Need a ConverterParameter of either X or Y");
}

它确实在启动时起作用,这意味着绑定(bind)的初始值是正确的(如 Snoop 所示);问题是停靠面板在运行时移动,但绑定(bind)不会更新到停靠面板的新位置。基本上我想要一条将静态形状连接到移动形状的线。 (移动的形状实际上是在一个装饰器中,用户可以拖动它来移动)

1 Câu trả lời

您的绑定(bind)没有更新,因为您没有绑定(bind)到 gốc rễ 的任何属性。或 bắt đầu元素,而是通过绑定(bind)转换器直接从源对象中检索属性值。

幸运的是你不需要那个转换器。只需像这样编写绑定(bind):


Y1="{Binding Path=(Canvas.Top), ElementName=start}"
X2="{Binding Path=(Canvas.Left), ElementName=root}"
Y2="{Binding Path=(Canvas.Top), ElementName=root}"
Stroke="Red" StrokeThickness="2" />

请注意,附加属性的名称应放在 binding property path 中的括号中。 .

关于wpf - 元素移动时绑定(bind)到 Canvas.Left 会中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20609974/

27 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com