【问题标题】:Bind Button Content to DatePicker SelectedDate将按钮内容绑定到 DatePicker SelectedDate
【发布时间】:2012-04-10 17:42:09
【问题描述】:

我有以下 DatePicker 控件:

<DatePicker SelectedDate="{Binding DateFor}" Style="{StaticResource ButtonDatePicker}"/>

ButtonDatePicker 样式定义如下:

<Style x:Key="ButtonDatePicker" TargetType="{x:Type DatePicker}">
    <Setter Property="IsTodayHighlighted" Value="True"/>
    <Setter Property="SelectedDateFormat" Value="Short"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DatePicker}">
                <Grid>
                    <Button x:Name="PART_Button" Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DatePicker}}, Path=SelectedDate.Date}"/>

                    <Grid IsHitTestVisible="False" Opacity="0">
                        <Popup x:Name="PART_Popup" AllowsTransparency="True" Placement="Bottom" StaysOpen="False"/>
                    </Grid>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

我想将PART_Button Button 的Content 属性绑定到DatePicker 本身的SelectedDate.Date 属性。我试过这样:

Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DatePicker}}, Path=SelectedDate.Date}"

但它不起作用。 Button 的内容一直是​​“显示日历”(我没有设置),如下图所示。

您对这个问题有什么建议吗?

【问题讨论】:

    标签: wpf xaml styles datepicker controltemplate


    【解决方案1】:

    更改 Button 以使用 TextBlock 作为其内容:

    <Button x:Name="PART_Button">
        <TextBlock Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DatePicker}}, Path=SelectedDate.Date}"/>
    </Button>
    

    【讨论】:

    • 结合正确的 StringFormat 语句,您的答案就是我所需要的 :) 谢谢。
    猜你喜欢
    • 2011-05-22
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    相关资源
    最近更新 更多