【问题标题】:bind the date of the DatePicker to ConverterParameter将 DatePicker 的日期绑定到 ConverterParameter
【发布时间】:2011-05-14 15:47:22
【问题描述】:

我正在尝试使用转换器类根据 DatePicker 中的日期在 ComboBox 中标记名称。

我目前的问题是我不知道如何将 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>

【问题讨论】:

    标签: c# .net wpf datepicker converter


    【解决方案1】:

    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。但你肯定可以玩弄它!

    【讨论】:

    • 非常感谢您的清晰解释。您确实可以像您展示的那样从样式资源中通过 ElementName 引用 collectDatePicker。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 2018-09-20
    • 2011-08-20
    相关资源
    最近更新 更多