【问题标题】:Making text in a Silverlight datagrid cell bold upon selection选择时使 Silverlight 数据网格单元格中的文本变为粗体
【发布时间】:2011-10-28 19:05:42
【问题描述】:

我正在尝试使用 XAML 在 Silverlight 4 中将选定单元格的文本设为粗体。我已经尝试修改 DataGridCell 模板,但我只修改了选择的背景颜色,找不到任何字体粗细。

【问题讨论】:

    标签: silverlight templates xaml datagrid cell


    【解决方案1】:

    这就是我所做的并为我工作:

    <UserControl.Resources>
            <Style x:Key="DataGridCellStyle1" TargetType="sdk:DataGridCell">
                <Setter Property="Background" Value="Transparent"/>
                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                <Setter Property="VerticalContentAlignment" Value="Stretch"/>
                <Setter Property="IsTabStop" Value="False"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="sdk:DataGridCell">
                            <Grid x:Name="Root" Background="{TemplateBinding Background}">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>
                                <VisualStateManager.VisualStateGroups>
                                    <VisualStateGroup x:Name="CurrentStates">
                                        <VisualState x:Name="Regular"/>
                                        <VisualState x:Name="Current">
                                            <Storyboard>
                                                <DoubleAnimation  Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisual"/>
                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="contentPresenter"
                                                                               Storyboard.TargetProperty="(Content).FontWeight"
                                                                               Duration="0">
                                                    <DiscreteObjectKeyFrame KeyTime="0"
                                                                            Value="Bold" />
                                                </ObjectAnimationUsingKeyFrames>
                                            </Storyboard>
                                        </VisualState>
                                    </VisualStateGroup>
                                    <VisualStateGroup x:Name="ValidationStates">
                                        <VisualState x:Name="Valid"/>
                                        <VisualState x:Name="Invalid">
                                            <Storyboard>
                                                <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="InvalidVisualElement"/>
                                                <ColorAnimation Duration="0" To="#FFFFFFFF" Storyboard.TargetProperty="(Fill).Color" Storyboard.TargetName="FocusVisual"/>
                                            </Storyboard>
                                        </VisualState>
                                    </VisualStateGroup>
                                </VisualStateManager.VisualStateGroups>
                                <Rectangle x:Name="FocusVisual" Fill="#66FFFFFF" HorizontalAlignment="Stretch" IsHitTestVisible="false" Opacity="0" Stroke="Blue" StrokeThickness="3" VerticalAlignment="Stretch"/>
                                <ContentPresenter x:Name="contentPresenter"
                                                  Margin="0"                                              
                                                  FlowDirection="RightToLeft"
                                                  ContentTemplate="{TemplateBinding ContentTemplate}"
                                                  Content="{TemplateBinding Content}"
                                                  HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                  VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
                                </ContentPresenter>
                                    <Rectangle x:Name="InvalidVisualElement" HorizontalAlignment="Stretch" IsHitTestVisible="False" Opacity="0" Stroke="#FFDC000C" StrokeThickness="1" VerticalAlignment="Stretch"/>
                                <Rectangle x:Name="RightGridLine" Grid.Column="1" VerticalAlignment="Stretch" Width="1"/>
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </UserControl.Resources>
    
        <Grid x:Name="LayoutRoot" Background="White">        
            <sdk:DataGrid AutoGenerateColumns="False"
                          Height="154"
                          HorizontalAlignment="Left"
                          Margin="38,41,0,0"
                          Name="dataGrid1"
                          VerticalAlignment="Top"
                          Width="182" CellStyle="{StaticResource DataGridCellStyle1}"   >
                <sdk:DataGrid.Columns>
                    <sdk:DataGridTextColumn Binding="{Binding Key}"  />
                    <sdk:DataGridTextColumn Binding="{Binding Value}" />
                </sdk:DataGrid.Columns>
            </sdk:DataGrid>         
        </Grid>
    

    MainPage.cs中的绑定代码

        IDictionary<string, object> test = new Dictionary<string, object>();
        test.Add(new KeyValuePair<string, object>("Name", "A"));
        test.Add(new KeyValuePair<string, object>("Height", 2));
    
        this.dataGrid1.ItemsSource = test;
    

    在单元格样式中查看这段代码:

    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="contentPresenter"
                                   Storyboard.TargetProperty="(Content).FontWeight"
                                   Duration="0">
        <DiscreteObjectKeyFrame KeyTime="0"
                                Value="Bold" />
    </ObjectAnimationUsingKeyFrames>     
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多