簡體   English   中英

在用戶控件內綁定WPF DataGrid

[英]Binding a WPF DataGrid inside a UserControl

我想創建一個包含DataGrid的UserControl,然后直接在UserControl中定義列:

<my:ControlContainingDataGrid ItemsSource="{Binding}">
  <my:ControlContainingDataGrid.Columns>
    <DataGridTextColumn Binding="{Binding Path=Property1}" Header="Property 1"/>

在UserControl中,我公開了DataGrid的列:

static ControlContainingDataGrid()
{
  ColumnsProperty = DependencyProperty.Register(
    "Columns",
    typeof(ObservableCollection<DataGridColumn>),
    typeof(ControlContainingDataGrid),
    new UIPropertyMetadata(new ObservableCollection<DataGridColumn>())
  );
}

[Description("Columns"), Category("Columns")]
public ObservableCollection<DataGridColumn> Columns
{
  get { return _datagGrid.Columns; }
}

public static readonly DependencyProperty ColumnsProperty;

=>它不起作用:未創建綁定到Property1的列。

我嘗試以編程方式創建列:

    _datagGrid.Columns.Add(new DataGridTextColumn {
      Header = "Property 1",
      Binding = new Binding {
        Path = new PropertyPath("Property1"),
        Mode = BindingMode.TwoWay,
      },
    });

_datagGrid.ItemsSource = testList;

=>它不起作用:顯示標題,但我的DataGrid的每一行都是空的(綁定錯誤?)。


1-通過XAML部分中的UserControl綁定DataGrid列的最簡單方法是什么?

2-以編程方式通過UserControl綁定DataGrid列的最簡單方法是什么?

我以編程方式執行此操作。 與您幾乎相同的代碼。 工作正常。 我從未嘗試綁定Columns集合本身,盡管我不明白為什么這不起作用。

您的信息有點含糊。 如果您要說的是列未顯示,則可能需要在創建表之前添加列。 如果行在列中顯示為空值,則您的綁定“ Property1”是錯誤的。

我不在XAML中工作,所以對此一無所知。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM