当在我的数据网格中选择一行并按下一个按钮时,我想将该行中单元格的FontWeight更改为粗体。

我一直在寻找一种方法来做,但是我所能做的就是改变每列的样式,我找不到一种方法来获取选定的行(或与此相关的任何行)。

我没有可以绑定到ItemSource类型的特定值,因此,由于增加了复杂性,因此不需要使用XAML和ValueConverter的解决方案。也就是说,除非这是唯一的方法。

这是我的前进方式:

 <DataGrid Name="dgSessions" Width="200" Height="100"
                          CanUserAddRows="False" CanUserDeleteRows="False"
                          HeadersVisibility="None" GridLinesVisibility="None" AutoGenerateColumns="False"
                          SelectionMode="Single" Background="White">
                    <DataGrid.Columns>
                        <DataGridTextColumn Width="*" Binding="{Binding Path=Name}"></DataGridTextColumn>
                    </DataGrid.Columns>
                    <DataGrid.CellStyle>
                        <Style TargetType="{x:Type DataGridCell}">
                            <Style.Setters>
                                <Setter Property="FontWeight"
                                        Value="Normal"/>
                            </Style.Setters>
                        </Style>
                    </DataGrid.CellStyle>
  </DataGrid>


        private void btnConnect_Click(object sender, RoutedEventArgs e)
    {
        Style oldStyle = dgSessions.SelectedCells.First().Column.CellStyle;
        Setter setter = null;
        foreach (Setter item in oldStyle.Setters)
        {
            if (item.Property.Name == "FontWeight")
            {
                setter = new Setter(item.Property, FontWeights.Bold, item.TargetName);
                break;
            }
        }
        Style newStyle = new Style(oldStyle.TargetType);
        newStyle.Setters.Add(setter);
        dgSessions.SelectedCells.First().Column.CellStyle = newStyle;


    }

最佳答案

您可以如下定义DataGridRow样式,然后在按钮上单击以设置属性以触发通知,以在行上应用FontWeight

<Style x:Key="MyRowStyle" TargetType="DataGridRow">
    <Setter Property="FontWeight" Value="Normal"/>
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsProcessed}" Value="True">
            <Setter Property="FontWeight" Value="Bold"/>
        </DataTrigger>
    </Style.Triggers>
</Style>


DataGrid将定义为

<DataGrid RowStyle="{StaticResource MyRowStyle}" ...... />


现在要集成它,您必须在模型中定义绑定到ItemSourceDataGrid的属性(该模型应实现INotifyPropertyChanged接口)。单击按钮时,设置在模型中定义并在DataTrigger中绑定的属性

private void btnConnect_Click(object sender, RoutedEventArgs e)
{
     var dataContext = btnConnect.DataContext as <<Your Model>>;
     dataContext.IsProcessed = true;
}

关于c# - 如何将单个datagrid行的FontWeights更改为Bold?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33729167/

10-09 05:37