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>
我正在制作一个继承自 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>