0

彼の ItemSource が次のオブジェクトにバインドされている DataGrid があります。

public ObservableCollection<X> MyCollection{ get; set; }

クラス X には、DataGrid の列へのすべてのデータが含まれます

例:

private string name;

public string Name
{
    get { return name; }
    set
    {
        name= value;
        NotifyPropertyChanged("Name");
    }
}

コンテンツに基づいて列の幅をxamlに設定できるものはありますか (コンテンツが変更されると、それに応じて幅も変更されます)。

これを C# コードで実行する例をいくつか見てきました。XAML で実行したいのですが、可能ですか?

編集:

データグリッド:

<DataGrid x:Name="DG" ItemsSource="{Binding}" AutoGenerateColumns="False">
  <DataGrid.Columns>
     <DataGridTextColumn Header="{x:Static p:Resources.Name}" Binding="{Binding Name}"></DataGridTextColumn>
     <DataGridTextColumn Header="{x:Static p:Resources.x}" Binding="{Binding X}"></DataGridTextColumn>
     <DataGridTextColumn Header="{x:Static p:Resources.y}" Binding="{Binding Y}"></DataGridTextColumn>
  </DataGrid.Columns>
</DataGrid>
4

2 に答える 2

5

これが機能するように設定できますColumnWidth="SizeToCells"

<DataGrid x:Name="DG" ColumnWidth="SizeToCells"  ItemsSource="{Binding}" AutoGenerateColumns="False">

利用可能なサイズ モードColumnWidth

  • Autoデフォルトの自動サイズ変更モードでは、セルと列ヘッダーの両方の内容に基づいて DataGrid 列のサイズが変更されます。
  • SizeToCellsセル ベースの自動サイズ変更モードは、列ヘッダーを含まない、列内のセルの内容に基づいて DataGrid 列のサイズを変更します。
  • SizeToHeaderヘッダー ベースの自動サイズ変更モードは、列ヘッダーの内容のみに基づいて DataGrid 列のサイズを変更します。
  • ピクセル ピクセルベースのサイズ変更モードでは、提供された数値に基づいて DataGrid 列のサイズが変更されます。
  • スター(*)スター サイジング モードは、使用可能なスペースを加重比率で分配するために使用されます。
于 2013-02-06T06:49:49.363 に答える
1

XAMLで列を明示的に定義している場合は、幅を[自動]に設定するだけです。ただし、これがデフォルトになります。

<DataGridTextColumn Width="Auto" Header="{x:Static p:Resources.Name}" Binding="{Binding Name}"></DataGridTextColumn>
于 2013-02-06T07:01:08.413 に答える