gpt4 book ai didi

c# - 在 WPF 客户端应用程序中设置用户控件的数据上下文

转载 作者:太空宇宙 更新时间:2023-11-03 13:05:58 25 4
gpt4 key购买 nike

我已经创建了第三方用户控件,现在想在客户端应用程序中使用它。我在将 DataContext 设置为控件时遇到问题。

用户控件:-

<Grid>
<DataGrid x:Name="dataGrid" Width="400" Height="400" ItemsSource="{Binding DataTableSource}"/>
</Grid>

代码隐藏:-

public partial class CustomGridControl : UserControl
{
public CustomGridControl()
{
InitializeComponent();
this.DataContext = this;
}

public DataTable DataTableSource
{
get
{
return (DataTable)GetValue(GridSource);
}
set
{
SetValue(GridSource, value);
}
}

public static readonly DependencyProperty GridSource = DependencyProperty.Register("DataTableSource", typeof(DataTable), typeof(CustomGridControl), new PropertyMetadata(null));
}

如何在客户端应用程序中设置 DataTableSource?

<Grid>
<controls:CustomGridControl Name="myCustGrid" />
</Grid>


public MainWindow()
{
InitializeComponent();
ds = provider.GetDataSet();
table = ds.Tables[0];
//I have to set the table as DataTableSource. Here I am unable to access DataTableSource.

}

我无法访问 myCustGrid.DataTableSource。它说 CustomGridControl 不包含 DataTableSource 的定义。为什么?

最佳答案

我试过您的自定义继承自 Grid:

public partial class CustomGridControl : Grid
{
public DataTable DataTableSource
{
get
{
return (DataTable)GetValue(GridSource);
}
set
{
SetValue(GridSource, value);
}
}

public static readonly DependencyProperty GridSource = DependencyProperty.Register("DataTableSource", typeof(DataTable), typeof(CustomGridControl), new PropertyMetadata(null));
}

这是 xaml:

<local:CustomGridControl x:Name="testCustomGrid" />

而且我可以像这样使用代码隐藏:

testCustomGrid.DataTableSource = new DataTable("dtName");

我也能够从 UserControl 继承:

 /// <summary>
/// Interaction logic for CustomGridControl.xaml
/// </summary>
public partial class CustomGridControl : UserControl, INotifyPropertyChanged
{
public CustomGridControl()
{
InitializeComponent();
}
private DataTable _DataTableSource;

public DataTable DataTableSource
{
get { return _DataTableSource; }
set
{
_DataTableSource = value;
PropertyChanged(this, new PropertyChangedEventArgs("DataTableSource"));
}
}


public event PropertyChangedEventHandler PropertyChanged = delegate { };



public DataTable DataTableSourceVersion2
{
get { return (DataTable)GetValue(DataTableSourceVersion2Property); }
set { SetValue(DataTableSourceVersion2Property, value); }
}

// Using a DependencyProperty as the backing store for DataTableSourceVersion2. This enables animation, styling, binding, etc...
public static readonly DependencyProperty DataTableSourceVersion2Property =
DependencyProperty.Register("DataTableSourceVersion2", typeof(DataTable), typeof(CustomGridControl), new PropertyMetadata(null));
}

这是 XAML:

  <local:CustomGridControl DataTableSource="" DataTableSourceVersion2=""/>

因此,两个版本的 DataSourceTable 都可用。

关于c# - 在 WPF 客户端应用程序中设置用户控件的数据上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30794451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com