0

私はこれを持っていますDataGrid

<DataGrid x:Name="dgTimeline" GridLinesVisibility="Horizontal" AutoGenerateColumns="False" CanUserAddRows="False" CanUserResizeColumns="false" 
        IsReadOnly="True" VerticalAlignment="Stretch" CanUserReorderColumns="False" CanUserSortColumns="False" Height="Auto" SelectionMode="Single" Focusable="False" Margin="0,293,0,0" CanUserResizeRows="False" GotFocus="dgTimeline_GotFocus">

    <DataGrid.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="BorderThickness" Value="0" />
            <Setter Property="Foreground" Value="Black" />
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Background" Value="{x:Null}" />
                    <Setter Property="BorderBrush" Value="{x:Null}" />
                 </Trigger>
            </Style.Triggers>
        </Style>
    </DataGrid.CellStyle>
</DataGrid>

列と行の両方が動的に生成されます。最初の列のすべての行にボタンを追加するにはどうすればよいですか? 私が試してみました:

<DataGrid.Columns>
    <DataGridTemplateColumn>
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <Button>Show/Hide</Button>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid.Columns>

最初の列を追加する方法は次のとおりです。

DataGridTextColumn dgTextCol = new DataGridTextColumn();
dgTextCol.Header = "Events / Time";
dgTextCol.Width = 150;
dgTextCol.Binding = new Binding("Name");
dgTimeline.Columns.Add(dgTextCol);

そして、次の項目を追加します。

public class TimeScale
{
    public string Name { get; set; }
}

TimeScale temp = new TimeScale { Name = "foo" };

dgTimeline.Items.Add(temp);

そして foo は最初の列になります。

最初の列の行にボタンを配置するにはどうすればよいですか?

4

1 に答える 1

0

私はそれを解決することができました:

DataGridTemplateColumn dgc = new DataGridTemplateColumn();
DataTemplate dtm = new DataTemplate();

FrameworkElementFactory btnReset = new FrameworkElementFactory(typeof(Button));
btnReset.SetValue(Button.ContentProperty, new Binding("Name"));
btnReset.SetValue(Button.ToolTipProperty, "Restore Selected Row");

dtm.VisualTree = btnReset;
dgc.Header = "";
dgc.CellTemplate = dtm;
dgTimeline.Columns.Add(dgc);
于 2013-05-23T20:07:39.680 に答える