2011-05-14 3 views
1

변환기 클래스를 사용하는 DatePicker의 Date를 기반으로 ComboBox에 이름을 표시하려고합니다.DatePicker의 날짜를 ConverterParameter에 바인딩합니다.

현재 문제는 DatePicker의 날짜를 "ConverterParameter"에 바인딩하는 방법을 모르겠다는 것입니다. 어떤 제안?

(아마 더 내 코드에서 오류하지만 난이 시점에서 붙어있어)

<Page.Resources> 
    <Style TargetType="ComboBoxItem" x:Key="combostyle"> 

     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ComboBoxItem"> 
        <ControlTemplate.Resources> 
         <src:ColorFromMagazijnierIdConverter x:Key="conv" /> 
        </ControlTemplate.Resources> 

        <Grid ToolTip="{Binding Converter={StaticResource conv}, ConverterParameter={ BIND THIS TO THE DATEPICKER DATE }, Mode=OneWay}"> 
         <Rectangle x:Name="MarkedItemBackground" IsHitTestVisible="False" Fill="#80FF0000" /> 
         <!--...--> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <DataTrigger Binding="{Binding Converter={StaticResource conv}}" 
             Value="{x:Null}"> 
          <Setter TargetName="MarkedItemBackground" 
             Property="Visibility" Value="Hidden" /> 
         </DataTrigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Page.Resources> 
<Grid Margin="10,10,10,0" Name="rootGrid"> 
    <ComboBox Name="collectMagazijnierComboBox" 
       DisplayMemberPath="User.Name" 
       ItemContainerStyle="{DynamicResource ResourceKey=combostyle}"/> 
    <DatePicker Name="collectDatePicker" /> 
</Grid> 

답변

5

이 ConverterParameter 속성은 바인딩의 대상이 될 수 없습니다. DependencyObject의 DependencyProperty 만 바인딩 대상이 될 수 있습니다.

당신은 MultiBinding를 사용해야합니다 :

<Grid> 
    <Grid.ToolTip> 
     <MultiBinding Converter="{StaticResource conv}" Mode="OneWay"> 
      <Binding /> <!-- this mimics your current binding to the datacontext itself --> 
      <Binding ElementName="collectDatePicker" Path="SelectedDate" /> 
     </MultiBinding> 
    </Grid.ToolTip> 

    <Rectangle x:Name="MarkedItemBackground" IsHitTestVisible="False" Fill="#80FF0000" /> 

    <!--...--> 

</Grid> 

당신은 대신 IMultiValueConverter 인터페이스를 구현하는이 두 값에 액세스 할 수 있습니다 ColorFromMagazijnierIdConverter 컨버터를 다시 작성해야합니다.

비록 내가 styleName 클래스 내에서 ElementName에 의해 collectDatePicker를 참조 할 수 있는지 확실하지는 않습니다. 그러나 당신이 그걸로 놀 수 있는지!

+0

명확한 설명을 위해 많은 관심 부탁드립니다. 사용자가 보여준 것처럼 스타일 리소스 내에서 ElementName을 통해 collectDatePicker를 참조 할 수 있습니다. – VDP