【问题标题】:WPF User Control XAML bindingWPF 用户控件 XAML 绑定
【发布时间】:2012-04-15 13:24:46
【问题描述】:

我有以下用户控制:

<UserControl.Resources>

    <Style TargetType="HeaderedItemsControl">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="HeaderedItemsControl">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="*"/>
                        </Grid.RowDefinitions>
                        <TextBlock FontFamily="Segoe Script"
                                   Text="{Binding ElementName=myHeaderedItemsControl.Header, Path=Category, Mode=OneWay}"
                                   FontWeight="Bold"
                                   HorizontalAlignment="Center"
                                   Foreground="Olive" 
                                   Margin="20"
                                   FontSize="50"
                                   TextWrapping="Wrap"
                                   Name="myText"/>
                        <ItemsPresenter Grid.Row="1" Grid.Column="1"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</UserControl.Resources>

<Grid x:Name="LayoutRoot">        
            <TextBlock.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform Angle="-90"/>
                    <TranslateTransform/>
                </TransformGroup>
            </TextBlock.RenderTransform>
        </TextBlock>
    </StackPanel>-->
    <HeaderedItemsControl Name="myHeaderedItemsControl"  Header="Predrag">
    </HeaderedItemsControl>
</Grid>

基本上我想要的是将Textblock 文本属性绑定到HeaderedItemsControl 标题属性。

【问题讨论】:

  • 你为什么不像我在你的other question中显示的那样使用ContentPresenterContentSource="Header"
  • 因为我没有设置合适的样式...
  • 您可以将其包装在Border 中并在那里设置属性,通常就是这样做的。 (也可以通过附加属性设置文本属性,例如TextElement.Foreground
  • 为什么ContentPresenter 是更好的方法?
  • 因为它是为此而生的,它也不将内容限制为纯文本。除了绑定到标题之外,它还允许您连接HeaderTemplateHeaderTemplateSelector(这会在您使用ContentSource 时自动发生)

标签: .net wpf xaml binding wpf-controls


【解决方案1】:

为什么不用这个:

<TextBlock Text="{TemplateBinding Header}" />

但不知道Path=Category 是什么意思。

【讨论】:

  • 有没有办法将 c# 代码中的其他 UIElement 添加到 HeaderedItemsControl 因为没有 Children 属性?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
  • 2016-01-12
相关资源
最近更新 更多