WPF XAML 自定义控件:单击 "CheckBox",更新内部文本

WPF XAML Custom Control: Click "CheckBox", update inner text

我正在制作一个继承自 CheckBox 的自定义控件。我在里面有一个文本框,当我单击 "CheckBox" 时,我想将文本框的文本更改为 "true"。我试过使用 DataTriggers,但似乎没有任何效果。我当前的设置是

<Style TargetType="{x:Type local:MyCheckBox}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:MyCheckBox}"> 
                <Grid DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" 
                      Width="{TemplateBinding Width}"
                      Height="{TemplateBinding Height}">

                    <Border x:Name="CheckBoxTextContainer" CornerRadius="50" Background="Green"
                            VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                        <TextBlock x:Name="CheckBoxText" Text="False" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                    </Border>

                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

如何以及在何处定义触发器,以便在我单击 "CheckBox" 时更改 "CheckBoxText"

的文本

您可以使用 DataTrigger 来完成此操作(您将绑定 RelativeSource Self 以到达 IsChecked),但使用常规 Trigger 更简单:

<ControlTemplate.Triggers>
    <Trigger Property="IsChecked" Value="True">
        <Setter TargetName="CheckBoxText" Property="Text" Value="True" />
    </Trigger>
</ControlTemplate.Triggers>

如果你想开始一个故事板,

<ControlTemplate.Triggers>
    <Trigger Property="IsChecked" Value="True">
        <Setter TargetName="CheckBoxText" Property="Text" Value="True" />
        <Trigger.EnterActions>
            <BeginStoryboard>
                <Storyboard ...stuff... />
            </BeginStoryboard>
        </Trigger.EnterActions>
    </Trigger>
</ControlTemplate.Triggers>