2015-05-12 3 views
1

Я хочу связать ListBox SelectedItem кListbox SelectedItem связывание с UserControl

Это мой код для Listbox в моем UserControl.xaml

Style x:Key="listbox" TargetType="ListBox"> 
     <!-- Region Setter Properties --> 
     <Setter Property="SelectionMode" Value="Single" /> 
     <Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type program:UserControl}}, Path=Source}" /> 

`<ListBox Name="ListBox" 
      Grid.Row="1" 
      SelectedIndex="{Binding RelativeSource={RelativeSource FindAncestor, 
                    AncestorType={x:Type program:UserControl}}, 
            Path=SelectedIndex}" 
      SelectedItem="{Binding Path=(program:UserControl.SelectedItem), 
            RelativeSource={RelativeSource AncestorType={x:Type program:UserControl}}}" 
      Style="{DynamicResource listbox}" />` 

В моей UserControl.xaml .cs

public object SelectedItem 
    { 
     get { return (object) GetValue(SelectedItemProperty); } 
     set { SetValue(SelectedItemProperty, value); } 
    } 

    public int SelectedIndex  
    { 
     get { return (int) GetValue(SelectedIndexProperty); } 
     set { SetValue(SelectedIndexProperty, value); } 
    } 

    /// <summary> 
    /// Identifies the <see cref="Selected" /> dependency property. 
    /// </summary> 
    public static readonly DependencyProperty SelectedProperty = DependencyProperty.Register(
     SelectedPropertyName, 
     typeof(object), 
     typeof(TileContainer), 
     new UIPropertyMetadata(default(object))); 

    public static readonly DependencyProperty SelectedItemProperty = DependencyProperty.Register("SelectedItem", typeof (object), typeof (UserControl), new PropertyMetadata(default(object))); 
    public static readonly DependencyProperty SelectedIndexProperty = DependencyProperty.Register("SelectedIndex", typeof (int), typeof (UserControl), new PropertyMetadata(default(int))); 

Нет rmally это работает, infact ItemsSource моего ListBox правильно принят, но SelectedIndex и SelectedItem не работают. Я просмотрел сеть, но я не нашел никакого решения, потому что, возможно, у них нет этой проблемы.

Я компилирую с .NET 4.5.

Thanx!

+0

Вам нужно добавить Mode = TwoWay для того, чтобы установить значение обратно от цели до источника (ваша собственность) –

+0

я сделал, но это doens't работу. – user1735846

ответ

0

Update вы DependencyProperty нравится так

public static readonly DependencyProperty SelectedProperty = DependencyProperty.Register(
    SelectedPropertyName, 
    typeof(object), 
    typeof(TileContainer), 
    new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); 
Смежные вопросы