Стиль такой:
<Style TargetType="{x:Type c:Setup}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type c:Setup}">
<CheckBox x:Name="PART_CheckBox"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
И я хочу создать свойство для программы установки под названием «IsChecked», но для проверки элемента управления CheckBox, если установлен флажок.Только Get, а не Set.
public class Setup : UserControl
{
public static readonly DependencyProperty IsCheckedProperty = DependencyProperty.Register("IsChecked", typeof(bool), typeof(Setup), new PropertyMetadata(false));
private CheckBox _CheckBox = null;
// -[ Constructor:
public Setup() : base()
{
}
static Setup()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(Setup), new FrameworkPropertyMetadata(typeof(Setup)));
}
// -[ Template:
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
_CheckBox = (CheckBox) Template.FindName("PART_CheckBox", this);
_CheckBox.Unchecked += _CheckBox_Unchecked;
_CheckBox.Checked += _CheckBox_Unchecked;
_CheckBox.Indeterminate += _CheckBox_Unchecked;
}
private void _CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
IsChecked = _CheckBox.IsChecked == true;
}
// -[ Property:
public bool IsChecked
{
get { return (bool) GetValue(IsCheckedProperty); }
private set { SetValue(IsCheckedProperty, value); }
}
}
Является ли другая альтернатива для захвата дочернего элемента IsChecked to parent?