0

私はWPF ToolkitのDataGridを使用しています - 最新のものです。しかし、以下のコードは機能していません

XAML コード

    <dg:DataGrid 
    Grid.Row="1"
    Name="eventLogGrid"
    Margin="5,0,5,0"
    BorderBrush="Black"
    ItemsSource="{Binding EventLogs}"
    SelectionMode="Single"
    IsReadOnly="True">
    <dg:DataGrid.Columns>
        <dg:DataGridTextColumn
            Binding="{Binding EventID}" Header="Event ID" />
        <dg:DataGridTextColumn
            Binding="{Binding Server}" Header="Server" />
        <dg:DataGridTextColumn
            Binding="{Binding Source}" Header="Source" />
        <dg:DataGridTextColumn
            Binding="{Binding Logged}" Header="Logged" />
    </dg:DataGrid.Columns>

</dg:DataGrid>

C# コード

public class EventLogItem
{
    public long EventID { get; set; }
    public string Name { get; set; }
    public string Message { get; set; }
    public Server Server { get; set; }
    public string Source { get; set; }
    public EventLogEntryType Level { get; set; }
    public DateTime Logged { get; set; }
    public string Machine { get; set; }
}
public List<EventLogItem> EventLogs
{
    get { return (List<EventLogItem>)GetValue(EventLogsProperty); }
    set { SetValue(EventLogsProperty, value); 
}

ここでの本当の問題は、xaml コードで列とそのバインディングを指定したにもかかわらず、データが到着したときにすべてのプロパティが列を占有していることです。望ましい効果は、これらのバインドされたプロパティのみが表示されることです。

4

2 に答える 2

2

DataGridにはプロパティがありますAutoGenerateColumns。これはデフォルトでtrueに設定されており、予期しない余分な列を提供します。AutoGenerateColumns="False"DataGridのxaml宣言を設定するだけで、指定された列のみが取得されます。

(個人的には、これは便利というよりも厄介なことだといつも思っています!)

于 2012-12-31T04:06:10.927 に答える