1

在我的 C#/WPF 应用程序中,我有一个使用文本换行和工具提示的Datagrid多列。DataGridTextColumn

我可以这样写每一列(这很好用):

<DataGridTextColumn Header="Name" Binding="{Binding Name}">
    <DataGridTextColumn.ElementStyle>
        <Style>
            <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
        </Style>
    </DataGridTextColumn.ElementStyle>
    <DataGridTextColumn.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="ToolTip" Value="Some tooltip text" />
        </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn>

但我想定义一个通用样式,可以设置换行和工具提示文本,知道每列的工具提示文本会有所不同。目的是避免代码冗余并使其更清晰。

到目前为止,这是我的风格:

<Window.Resources>
    <Style x:Key="WrapStyle" TargetType="{x:Type DataGridCell}">
        <Style.Setters>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type DataGridCell}">
                        <TextBox Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content.Text}" TextWrapping="Wrap">
                            <TextBox.ToolTip>
                                <ToolTip>
                                    <ToolTip.Content>
                                        <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Tooltip}" />
                                    </ToolTip.Content>
                                </ToolTip>
                            </TextBox.ToolTip>
                        </TextBox>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style.Setters>
    </Style>
</Window.Resources>

还有我的专栏:

<DataGridTextColumn Header="Name" Binding="{Binding Name}" CellStyle="{StaticResource WrapStyle}" />

问题是我无法指定要传递给样式的工具提示。有没有办法在不DataGridTextColumn.CellStyle为每列写 5 行的情况下做到这一点?谢谢

4

1 回答 1

1

将样式修改为 -

<Window.Resources>
    <Style x:Key="WrapStyle" TargetType="DataGridCell">
        <Style.Setters>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type DataGridCell}">
                        <TextBox Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content.Text}" TextWrapping="Wrap">
                            <TextBox.ToolTip>
                                <ToolTip>
                                    <ToolTip.Content>
                                        <TextBlock Text="{Binding Path=Tooltip}"></TextBlock>
                                    </ToolTip.Content>
                                </ToolTip>
                            </TextBox.ToolTip>
                        </TextBox>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style.Setters>
    </Style>
</Window.Resources>
于 2015-04-01T10:13:32.620 回答