繁体   English   中英

设置不带有ItemsControl的Canvas子级属性ItemsItem绑定属性

[英]Setting Canvas Children Property without ItemsControl ItemsSource Binding Property

有没有办法设置没有ItemsControl ItemsSource绑定属性的Canvas Children属性?

为了使我的视图与viewmodel分开,我必须绑定项目。 我已经将画布用作“ CodeProject”的设计师

http://www.codeproject.com/KB/WPF/WPFDiagramDesigner_Part2.aspx

我将画布用于拖放目的。 当我在画布中手动工作时,它会很好地工作。 这意味着我使用添加和删除子项

myCanvas.Children.Add(userControl);
myCanvas.Children.Remove(userControl);

但是,如果我在运行时加载用户控件,则它们将作为视图加载。

<s:Canvas  AllowDrop="True" >

   <ItemsControl Grid.Row="1" ItemsSource="{Binding Path=userControls}">

        <ItemsControl.ItemsPanel>                        
            <ItemsPanelTemplate>
              <s:Canvas Background="Transparent"/>                                
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>

        <ItemsControl.ItemTemplate>
            <DataTemplate>                                
                <s:ControlItem Content="{Binding Path=MyView}"></s:ControlItem >
            </DataTemplate>
        </ItemsControl.ItemTemplate>

        <ItemsControl.ItemContainerStyle>
            <Style>
                <Setter Property="Canvas.Left" Value="{Binding Path=X}" />
                <Setter Property="Canvas.Top" Value="{Binding Path=Y}" />
            </Style>
        </ItemsControl.ItemContainerStyle> 

    </ItemsControl>

  </s:Canvas>

不,不是。 (除了手动清除和添加...)

嗯,是在画布上画东西吗? :)

<Canvas>
   <TextBlock Text="I'm Child #1" />
   <TextBlock Text="I'm Child #2" Canvas.Top="50" />
</Canvas>

或者,您始终可以在代码隐藏中进行操作

myCanvas.Children.Add(myTextBlock);

foreach(var someControl in SomeControlList)
    myCanvas.Children.Add(someControl);

编辑

我看到您的最新消息,也不知道您要问什么。 如果要将项目拖放到Canvas上,最好从ItemsSource添加/删除项目,而不是手动从Canvas添加/删除项目。 只需在myCanvas添加/删除它们就不会更新ItemsSource的集合

我建议您看一下Bea Stollnitz的有关拖放数据绑定项的文章 这意味着您将保留现在拥有的ItemsControl ,但是当您在Canvas上放置一个项目时,它将在该对象后面的DataItem添加到您称为userControlsObservableCollection<MyDataItem>中(我不喜欢这个名称,因为它建议数据项包含UI项,事实并非如此)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM