2011-05-14 66 views
1

我試圖使用轉換器類根據DatePicker中的日期在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> 

然後您就需要重寫你的ColorFromMagazijnierIdConverter轉換器來實現IMultiValueConverter接口代替,在其中您可以訪問這兩個值。

雖然,我不是100%確定是否可以通過類似資源中的ElementName引用collectDatePicker。但確定你可以玩它!

+0

非常感謝您的明確解釋。您確實可以像樣式一樣從樣式資源中通過ElementName引用collectDatePicker。 – VDP 2011-05-16 12:26:19