привязать дату DatePicker к ConverterParameter - PullRequest
1 голос
/ 14 мая 2011

Я пытаюсь пометить имена в ComboBox на основе Date из DatePicker, используя класс конвертера.

Моя текущая проблема заключается в том, что я не знаю, как привязать дату 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>

1 Ответ

5 голосов
/ 15 мая 2011

Свойство ConverterParameter не может быть целью привязки. Только DependencyProperty объекта DependencyObject может быть целью привязки.

Вам нужно будет использовать 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%, можете ли вы ссылаться на collectDatePicker по ElementName из ресурса стиля, подобного этому. Но уверен, что вы можете поиграть с ним!

...