最佳做法是通过绑定将UserControl添加到父控件

时间:2016-02-16 12:46:17

标签: c# wpf binding user-controls

我有一个ObservableCollection<ControlMachine>,其中每个ControlMachine都是UserControl,用于显示有关一台计算机的信息。

    public static ObservableCollection<ControlMachine> ListControleMachine =
                        new ObservableCollection<ControlMachine>();

我尝试使用绑定

显示该集合
   <Grid ForceCursor="True" x:Name="grid2" OpacityMask="{x:Null}" Margin="10,38,10,10" Background="#FFF5F6F6">
       <ItemsControl ItemsSource="{Binding ListControleMachine}">
           <ItemsControl.ItemTemplate>
               <DataTemplate DataType="{x:Type Brush}">
                   <Rectangle Canvas.ZIndex="3" Width="100" Height="100" Canvas.Top="100" Canvas.Left="100" Fill="blue"/>
               </DataTemplate>
           </ItemsControl.ItemTemplate>
       </ItemsControl>
   </Grid>

我的用户控件未在Grid中显示此代码。怎么了?

问题:将ControlMachine置于其他控制之下的最佳做法是什么?。

可以关闭和扩展那些ControlMachine,我无法找到干净方式来更新任何案例的用户控件位置。

附件:您是否认为在这种情况下使用UserControl是好的做法,或者我应该使用TemplateStackPanel

你会如何实现这个?

1 个答案:

答案 0 :(得分:0)

此解决方案的最佳做法是使用ViewModel而不是UserControl并将其绑定到网格中。 您可以在ViewModel中使用DependencyProperty和INotifyPropertyChanged进行双向绑定。 因此,您不会警告处理......