Prendiamo uno UserControl che contiene una semplice listbox:

   1: <Grid>
   2:         <ListBox HorizontalAlignment="Stretch"
   3:                  Name="listBox1"
   4:                  ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl},Path=MyValues}"
   5:                  VerticalAlignment="Stretch" />
   6: </Grid>

e che espone una proprietà MyValues ovviamente definita come dependency property:

   1: private static readonly DependencyProperty MyValuesProperty =
   2:         DependencyProperty.Register("MyValues",typeof(List<string>),
   3:                                                typeof(MyCustomList),   
   4:                                                new PropertyMetadata(new List<string>())
   5:         );
   6:  
   7:       public List<string> MyValues
   8:       {
   9:          get { return (List<string>)GetValue(MyValuesProperty); }
  10:          set { SetValue(MyValuesProperty, (List<string>)value); }
  11:       }

Aggiungiamo due istanze dello stesso usercontrol all’interno di una Window:

   1: <Grid>
   2:  
   3:         <my:MyCustomList HorizontalAlignment="Left"
   4:                          Margin="40,36,0,0"
   5:                          x:Name="myCustomList1"
   6:                          VerticalAlignment="Top"
   7:                          Width="252"
   8:                          Height="74" />
   9:         <my:MyCustomList HorizontalAlignment="Left"
  10:                          Margin="40,128,0,0"
  11:                          x:Name="myCustomList2"
  12:                          VerticalAlignment="Top"
  13:                          Height="78"
  14:                          Width="252" />
  15:     </Grid>

e nel costruttore scriviamo:

   1: public MainWindow()
   2:       {
   3:          InitializeComponent();
   4:  
   5:          myCustomList1.MyValues.Add("How");
   6:          myCustomList1.MyValues.Add("Are");
   7:          myCustomList1.MyValues.Add("You?");
   8:       }

A questo punto la domanda è: perchè entrambi gli usercontrol hanno lo stesso contenuto?

image

La risposta qui: http://msdn.microsoft.com/en-us/library/cc903961(VS.95).aspx