【问题标题】:Access Element in ControlTemplate from Style来自样式的 ControlTemplate 中的访问元素
【发布时间】:2016-02-17 09:15:23
【问题描述】:

我想在ControlTemplate 中添加StyleBorder。但我不知道如何访问它。我的Style 看起来像这样:

<Style x:Key="RedCell" TargetType="DataGridCell" BasedOn="{StaticResource MYDGCellStyle}">            
        <Setter Property="Foreground" Value="White" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="DataGridCell">
                    <Grid>
                        <Grid Grid.ZIndex="86" x:Name="CellContenGrind" Background="{TemplateBinding Background}" />                            
                        <Border Grid.ZIndex="87" x:Name="ContentBorder" BorderBrush="White" Background="Crimson" CornerRadius="25">
                            <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="Center" VerticalAlignment="Center" />
                        </Border>                            
                        <Grid Grid.ZIndex="88"  x:Name="CellGridFocused"/>
                    </Grid>
                    <ControlTemplate.Triggers>

                        <Trigger Property="IsFocused" Value="True">
                            <Setter Property="Background" TargetName="CellGridFocused" Value="{DynamicResource Brush_DataGridCellFocused}" />
                        </Trigger>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="Background" TargetName="CellContenGrind" Value="{DynamicResource Brush_DataGridSelected}" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <DataTrigger Binding="{Binding ungelesen}" Value="0">
                <Setter Property="Background" Value="Green"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>

我的 CellContentGrind 上需要 Background="{TemplateBinding Background}",因为还有其他一些东西,所以我不能把它移到我的 Border

如果 ungelesen = 0,我希望 ContentBorderBackground 为绿色。我该怎么做?

【问题讨论】:

    标签: c# wpf styles controltemplate


    【解决方案1】:

    为什么不将样式移动到边框本身?

    <Border Grid.ZIndex="87"x:Name="ContentBorder" BorderBrush="White" CornerRadius="25">
        <Border.Style>
            <Style TargetType="Border">
                <Setter Property="Background" Value="Crimson" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ungelesen}" Value="0">
                        <Setter Property="Background" Value="Green"/>
                    </DataTrigger>
                </Style.Triggers>                 
            </Style>
        </Border.Style>
    
        <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="Center" VerticalAlignment="Center" />
    </Border> 
    

    请注意,现在使用 Setter 设置背景,以便使用 DataTrigger 覆盖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      相关资源
      最近更新 更多