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 に答える