2016-10-22 10 views
0

しばらく検索していて、解決策を見つけることができませんでした。ネストされたリストボックスへのバインドカスタムコントロールのSelectedItem

私の目標は、自分のViewModelのプロパティをカスタムコントロールのリストボックスの選択項目にバインドすることです。

ファーストオフ - このカレンダーコントロールのソースはJarloo Custom Calendarです。私はカスタムパーソナル用に変更しています。

カレンダーコントロール(略称)は以下の通りである:(略記)

<ResourceDictionary> 
     <Style TargetType="{x:Type Neptune:Calendar}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type Neptune:Calendar}"> 

        <!--Some header items and other misc controls....--> 

         <DockPanel> 

          <!--Calendar--> 
          <ListBox ItemsSource="{Binding Days}" Background="{x:Null}" 
          SelectedItem="{Binding SelectedDay, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 

         </DockPanel> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 


とローカルこの制御を利用ウィンドウで

public class Calendar : Control 
    { 
     public ObservableCollection<Day> Days { get; set; } 

     //SelectedDay Property 
     public static readonly DependencyProperty SelectedDayProperty = 
     DependencyProperty.Register("SelectedDay", typeof(Day), typeof(Calendar), 
     new PropertyMetadata(null, OnSelectedDayChanged)); 

     public Day SelectedDay 
     { 
      get { return (Day)GetValue(SelectedDayProperty); } 
      set { SetValue(SelectedDayProperty, value); } 
     } 

     private static void OnSelectedDayChanged(DependencyObject pager, DependencyPropertyChangedEventArgs e) 
     { 
      Calendar d = pager as Calendar; 
      //MessageBox.Show(d.SelectedDaDateString());///THIS SHOWS CORRECT SELECTED DATE!!!! 
      d.SetValue(ThisDayProperty, d.SelectedDay); 
     } 

、Iはに結合しようとしていますこのSelectedDayプロパティは、テスト用に値を渡すために別のDPを作成しました。いずれの値も正しくバインドされていません。

<Neptune:Calendar Grid.Row="1" x:Name="Calendar" Margin="0,10,0,0" 
    ThisDay="{Binding DaySelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, 
    RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"> 


私は理解していない...なぜこれが動作しませんか?
私がしたいのは、Daysのカレンダーリストで選択した項目を反映するプロパティを公開することだけです。

答えて

関連する問題