如何使用触发器在Setter Value属性上绑定另一个控件?

时间:2014-12-01 10:33:43

标签: c# wpf triggers datepicker textblock

我对WPF中的数据绑定有一点问题,希望你能帮助我。

我想在TextBlock上绑定DatePicker的SelectedDate参数,但仅在选中CheckBox时才绑定。 CheckBox和TextBlock位于DataView中,DatePicker位于外部。

在Moment中我尝试将它与Trigger一起使用,并在Setter Part中的Value-Property中设置Binding。

<TextBlock Text="">
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=IsChecked}" Value="True">
                    <Setter Property="Text" Value="{Binding ElementName=StandartPitBis, Path=SelectedDate, StringFormat='dd.MM.yyyy'}" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

但这不会奏效。我有什么可以做的事吗?

以下是我正在使用的代码部分:

在GridView内部

CheckBox

<GridViewColumn>
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <CheckBox Content="" x:Name="check_Anlage" IsChecked="{Binding Path=IsChecked}" />
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

TextBlock

<TextBlock Text="">
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=IsChecked}" Value="True">
                    <Setter Property="Text" Value="{Binding ElementName=StandartPitBis, Path=SelectedDate, StringFormat='dd.MM.yyyy'}" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

在GridView之外

DatePicker

<DatePicker Grid.Column="1" Margin="0,5,0,5" SelectedDate="{x:Static sys:DateTime.Now}" x:Name="StandartPitVon" />

我想要做的是,DatePicker中的SelectedDate显示在TextBlock中,但仅在CheckBox被选中时才显示。

非常感谢

1 个答案:

答案 0 :(得分:2)

因此。我发现了问题。问题是,当在对象自身中设置属性时,它不能被覆盖。当您需要默认值和触发器时,您还必须在样式中定义默认值。

示例:

<TextBlock>
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Setter Property="Text" Value="{x:Null}" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=IsChecked}" Value="True">
                    <Setter Property="Text" Value="{Binding ElementName=StandartPitVon, Path=SelectedDate, StringFormat='dd.MM.yyyy'}" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>