WPF将自定义控件的子属性绑定到父控件
我是WPF的新手。我正在尝试创建一个具有HorizontalContentAlignment属性的自定义控件,该属性将根据容器的设置进行更改WPF将自定义控件的子属性绑定到父控件,wpf,binding,custom-controls,Wpf,Binding,Custom Controls,我是WPF的新手。我正在尝试创建一个具有HorizontalContentAlignment属性的自定义控件,该属性将根据容器的设置进行更改 <Style x:Key="SimpleRadioButton" TargetType="{x:Type RadioButton}"> <Setter Property="FocusVisualStyle" Value="{x:Null}"/> <Setter Property="Background" Val
<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>
然后在父容器中设置它们
<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>
但它似乎不起作用。有什么办法吗?谢谢对不起,我的英语不好。您可以使用以下命令,您的radiobutton将获取第一个父框架元素的值(例如,在本例中,您的ctrl:SideBarPanel)
您可以在xaml中使用这种方式:
<Setter Property="HorizontalAlignment">
<Setter.Value>
<Binding Path="HorizontalAlignment" RelativeSource="{RelativeSource AncestorLevel=1,AncestorType=FrameworkElement}" />
</Setter.Value>
</Setter>
我希望能帮助您
相对资源模板parent
旨在用于控制模板。请改为尝试RelativeSource-AncestorType=ctrl:SideBarPanel
。当然,还要添加一个源属性路径,即path=HorizontalContentAlignment
。谢谢您的回答。问题是容器可能不是侧边栏面板。我希望它可以用于任何类型的容器,而不仅仅是侧边栏面板。我不知道WPF是否允许。您可以直接绑定RadioButton的HorizontalContentAlignment属性,而不是以样式绑定。您是否计划设置此属性,然后将其值应用于所有子级?和。面板中的ui或其他任何东西是否会相当平坦?@Andy是的,我希望父级设置该值,并将其应用于所有子级。用户界面可以是任何东西,而不仅仅是面板。谢谢你。但是这个不行。它说RelativeSource类型中没有路径属性。