繁体   English   中英

WPF自定义组件Datagrid绑定

[英]WPF Custom Component Datagrid binding

因此,我试图对自己拥有的自定义组件执行一些数据绑定,但是我似乎找不到任何有关此操作的良好信息。 我想做的就是在主窗口中具有自定义组件以具有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.Register方法时,出现了绑定错误。请检查以确保您使用的是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}"

就是这样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM