首页 文章

在WPF中将Canvas内的UserControl的位置和大小绑定

提问于
浏览
0

我们需要动态创建(即在运行时,通过代码隐藏)UserControls并将它们放置在Canvas上 . 我们想将位置(Canvas.Left和Canvas.Top)和那些相当大的(!)和draggable(!)UserControls的宽度绑定到ObservableCollection <> . 当用户拖动或调整控件大小时,数据源会自动更新 .

如果Usercontrol包含在DataTemplate中,我们如何实现这一点呢?DataTemplate又由ListBox使用,其ListContext设置为我们想要绑定的集合?

换句话说,我们如何绑定XAML中不存在的控件的位置和大小,但仅限于代码(因为它是通过单击并拖动鼠标创建的)?

请注意,集合可以为空或非空,这意味着必须正确绑定存储在数据源中的大小和位置,以便可以在Canvas中正确地调整UserControl的大小和位置 - 通过DataBinding . 这可能吗?

1 回答

  • 0

    您是否尝试过使用 Mode=TwoWay 绑定?

    <YourUserControl 
        Canvas.Top="{Binding TopProperty, Mode=TwoWay}" 
        Canvas.Left={Binding LeftProperty, Mode=TwoWay}" 
        Height="{Binding HeightProperty, Mode=TwoWay}" 
        Width="{Binding WidthProperty, Mode=TwoWay}" />
    

    我不相信双向绑定可以用于调整大小或拖放操作,但只有一种方法可以找到 .

相关问题