我正在制作一个继承自CheckBox的自定义控件。在里面我有一个TextBox,当我点击“CheckBox”时,我想将TextBox的文本更改为“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”的文本
答案 0 :(得分:2)
您可以使用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>