I have an int array, which I'm using to create a bunch of sliders in an ItemsControl. I'm using a two-way binding on the sliders, but the array never gets set (I put a breakpoint on the setter). All of this is in a UserControl.
UserControl XAML:
<ItemsControl ItemsSource="{Binding Values, Mode=TwoWay}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Width="30" MaxWidth="30">
<Slider Orientation="Vertical" Margin="5,0,0,0"
Value="{Binding Path=., Mode=TwoWay}"
Maximum="100"
Minimum="-100"
Height="100"/>
<TextBox Text="{Binding Path=., Mode=TwoWay}" Name="NumberTextBox" PreviewTextInput="NumberValidationTextBox"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
UserControl Codebehind:
public int[] Values
{
get { return (int[])GetValue(ValuesProperty); }
set { SetValue(ValuesProperty, value); }
}
public static readonly DependencyProperty ValuesProperty =
DependencyProperty.Register("Values", typeof(int[]), typeof(Equalizer), new UIPropertyMetadata(new int[] { 0,0 }));
The UserControl is created in MainWindow, where it's fed the Values:
<local:Equalizer Margin="50" Height="20" Width="100" VerticalAlignment="Top"
MyText="{Binding TextData, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:MainWindow}}"
MyProperty="True"
MinValue="{Binding MinValue, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:MainWindow}}"
MaxValue="{Binding MaxValue, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:MainWindow}}"
Values="{Binding Values, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:MainWindow}, Mode=TwoWay}"/>