WPF自定义组件数据网格绑定
本文关键字:网格 绑定 数据网 数据 自定义 组件 WPF | 更新日期: 2023-09-27 18:00:03
所以,我试图对我拥有的自定义组件执行一些数据绑定,但我似乎找不到任何关于如何执行的好信息。我想做的只是在主窗口中让自定义组件具有Bindning属性。。。
<local:MultiColumnComboBox ItemsSource="{Binding Customers}" x:Name="NewCombo"></local:MultiColumnComboBox>
然后在自定义组件中。。。
<DataGrid ItemsSource="{Binding ItemsSource}" Name="dataGrid"></DataGrid>
如果有人知道如何做到这一点,请提供一些指导:)
编辑
public static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.Register("ItemsSource", typeof(IList<Customer>), typeof(MultiColumnComboBox));
public MultiColumnComboBox()
{
InitializeComponent();
}
//Items Source Binding
public IList<Customer> ItemsSource
{
get
{
return (IList<Customer>)GetValue(ItemsSourceProperty);
}
set
{
System.Console.WriteLine("Binding");
System.Console.WriteLine(value);
SetValue(ItemsSourceProperty, value);
}
}
当我将错误的ownerType传递给DependencyProperty时,您会看到绑定错误。注册方法。。。请检查以确保您使用的是typeof(MultiColumnComboBox),如下所示。
/// <summary>
/// Interaction logic for MultiColumnComboBox.xaml
/// </summary>
public partial class MultiColumnComboBox : UserControl
{
/// <summary>
/// This creates the dependency property for the collection to display.
/// </summary>
public static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.Register("ItemsSource", typeof(IList<Customer>), typeof(MultiColumnComboBox));
/// <summary>
/// This property gets you to the collection that's being displayed.
/// </summary>
public IList<Customer> ItemsSource
{
get { return (IList<Customer>)GetValue(ItemsSourceProperty); }
set { SetValue(ItemsSourceProperty, value); }
}
public MultiColumnComboBox()
{
InitializeComponent();
}
}
此外,请确保在UserControl中设置Binding ElementName,使其具有正确的DataContext。
<UserControl x:Class="DependencyPropertyExample.MultiColumnComboBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="userControl1">
<Grid>
<DataGrid ItemsSource="{Binding Path=ItemsSource, ElementName=userControl1}" />
</Grid>
</UserControl>
我已经想通了!
您所要做的就是在主页面中使用控件中的DataContext属性。。
<local:custom control DataContext="{Binding Something}" />
在你的自定义控制下,我会。。。
ItemsSource="{Binding DataContext, ElementName=UOMControl}"
就是这样。