WPF将自定义控件的子属性绑定到父级

时间:2018-04-05 14:46:04

标签: wpf binding custom-controls

我是WPF的新手。我尝试使用Horizo​​ntalContentAlignment属性创建一个自定义控件,该属性将根据容器的设置进行更改。

<Style x:Key="SimpleRadioButton" TargetType="{x:Type RadioButton}">
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
    <Setter Property="Background" Value="Transparent"/>
    <Setter Property="Margin" Value="20 10 20 0"/>
    <Setter Property="Height" Value="24"/>
    <Setter Property="Padding" Value="6"/>
    <Setter Property="HorizontalContentAlignment" Value="{Binding RelativeSource={RelativeSource TemplatedParent}}"/>
</Style>

然后将它们设置在父容器中。

<ctrl:ToggleExpander
    Header="Worklist"
    IsChecked="{Binding IsVisible, Mode=TwoWay}"
    HorizontalContentAlignment="Right"
    IsToggleEnabled="True">
    <StackPanel>
        <ctrl:SideBarPanel
            HorizontalContentAlignment="Right"
            Header="map provider">
            <RadioButton
                Content="Finished"
                IsChecked="True"
                Style="{DynamicResource SimpleRadioButton}"/>
    </StackPanel>
</ctrl:ToggleExpander>

但它似乎不起作用。有什么办法可以解决吗?谢谢!对不起我的英语。

2 个答案:

答案 0 :(得分:0)

你可以使用以下内容,你的radiobutton将获取第一个父框架元素的值(例如在这种情况下你的ctrl:SideBarPanel)

<Setter Property="HorizontalContentAlignment" Value="{Binding RelativeSource={RelativeSource AncestorLevel=1, AncestorType=FrameworkElement}, Path=HorizontalContentAlignment}"/>

答案 1 :(得分:0)

您可以在xaml中使用这种方式:

<Setter Property="HorizontalAlignment">
        <Setter.Value>
            <Binding Path="HorizontalAlignment" RelativeSource="{RelativeSource AncestorLevel=1,AncestorType=FrameworkElement}" />
        </Setter.Value>
</Setter>

希望对您有帮助