在我的项目中,我有一个自定义控件,它是一个扩展器。使控件展开或折叠的按钮内容应根据状态而变化。我得到了大部分工作,但我没有将文本绑定到我用于按钮的内容。
这是来自Generic.xaml的我的XAML代码:
<ControlTemplate x:Key="PndExpanderControlVertical" TargetType="{x:Type local:PndExpanderControl}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<dx:DXExpander x:Name="expander" Grid.Column="0" FlowDirection="LeftToRight" VerticalExpand="None" HorizontalExpand="FromLeftToRight" IsExpanded="True">
<dxlc:GroupBox x:Name="group_box" Padding="0" Header="Header"/>
</dx:DXExpander>
<Button Grid.Column="1" Padding="1" x:Name="expand_button">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<!-- Button-Style, expanded -->
<DataTrigger Binding="{Binding IsExpanded, ElementName=expander}" Value="True">
<Setter Property="Content" Value="↧ ↧"/>
<Setter Property="LayoutTransform">
<Setter.Value>
<RotateTransform Angle="90"/>
</Setter.Value>
</Setter>
</DataTrigger>
<!-- Button-Style, collapsed -->
<DataTrigger Binding="{Binding IsExpanded, ElementName=expander}" Value="False">
<Setter Property="Content">
<Setter.Value>
<TextBlock>
<TextBlock Text="↥ "/>
<TextBlock Text="{Binding Header, ElementName=group_box}"/>
<TextBlock Text=" ↥"/>
</TextBlock>
</Setter.Value>
</Setter>
<Setter Property="LayoutTransform">
<Setter.Value>
<RotateTransform Angle="90"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>
</Border>
</ControlTemplate>
如您所见,我使用嵌套文本块将group_box的标题与一些箭头组合在一起。但是,中间文本块的绑定不起作用。
老实说,我现在和WPF合作了一段时间,但数据绑定(对于正确的来源)对我来说仍然是一个谜。大多数时候我以某种方式让它工作,但如果它失败了我不知道该怎么做。我用谷歌搜索了几个小时并尝试了各种各样的东西,但没有任何对我有用。
感谢任何帮助。
答案 0 :(得分:1)
您可以绑定Header
的{{1}}的{{1}}:
Content
您无法使用Expander
直接绑定到<TextBlock Text="↥ "/>
<TextBlock Text="{Binding Content.Header, ElementName=expander}"/>
<TextBlock Text=" ↥"/>
,因为它与ElementName
的名称范围不同。
修改强>
好的,它仅在默认情况下折叠扩展器时才有效。
但您可以使用GroupBox
绑定到Button
:
x:Reference