Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将UserControl依赖项属性绑定到运行时数据集_C#_.net_Wpf_Xaml_Data Binding - Fatal编程技术网

C# 将UserControl依赖项属性绑定到运行时数据集

C# 将UserControl依赖项属性绑定到运行时数据集,c#,.net,wpf,xaml,data-binding,C#,.net,Wpf,Xaml,Data Binding,我对xaml很陌生。我环顾了很多地方,找到了一些接近我想要做的事情的帖子,但是我还没有找到我想要的东西 我有一个具有依赖属性的外部WPF UserControl。在另一个项目中,我从UserControl库导入了dll。我在项目中创建了一个静态网格,其中每个单元格中都有一个usercontrol实例。我定义的每个UserControl DependencyProperty在xaml中都可用 在运行时,我将用数据填充DataTable,然后我需要将网格中的UserControl绑定到DataTab

我对xaml很陌生。我环顾了很多地方,找到了一些接近我想要做的事情的帖子,但是我还没有找到我想要的东西

我有一个具有依赖属性的外部WPF UserControl。在另一个项目中,我从UserControl库导入了dll。我在项目中创建了一个静态网格,其中每个单元格中都有一个usercontrol实例。我定义的每个UserControl DependencyProperty在xaml中都可用

在运行时,我将用数据填充DataTable,然后我需要将网格中的UserControl绑定到DataTable,以便每个UserControl都反映DataTable中的值。DataTable中的每一行都有几个列值,我需要将这些列值绑定到UserControl的依赖项属性

我遇到的问题是在检索数据后定义DataContext,这样我就可以为每个UserControl中的依赖项属性定义绑定路径。如果我将网格的DataContext设置为DataTable,如下所示:

Grid.DataContext = myDataTable;
那么UserControl属性的绑定路径的语法是什么

<my:ucControl Name="myUserControl1" MyDependencyProp="{Binding Path=??}" Grid.Column="1" Grid.Row="1" />
以下是XAML:

<Grid Canvas.Left="17" Canvas.Top="46" Name="MasterGrid" Width="1259" HorizontalAlignment="Left" VerticalAlignment="Top">
            <Grid.RowDefinitions>
            <RowDefinition Name="ColumnHeader" Height="25" />
            <RowDefinition Height="40" />
            <RowDefinition Height="40" />
            <RowDefinition Height="40" />
            </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Name="DateColumn" Width="80"/>
            <ColumnDefinition Width="65"/>
            <ColumnDefinition Width="65"/>
            <ColumnDefinition Width="65"/>
        </Grid.ColumnDefinitions>
            <my:ucControl Name="myControl1" Index="{Binding ??}" Status="{Binding ??}" Grid.Column="1" Grid.Row="1" Grid.RowSpan="1" />
            <my:ucControl Name="myControl2" Index="{Binding ??}" Status="{Binding ??}" Grid.Column="1" Grid.Row="2" Grid.RowSpan="1" />
            <my:ucControl Name="myControl3" Index="{Binding ??}" Status="{Binding ??}" Grid.Column="1" Grid.Row="2" Grid.RowSpan="1" />
        </Grid>
更新:我是如何解决这个问题的:

首先,我在项目中创建一个静态数据源,其中包含我要绑定到的列。向查询中添加参数,以便指定要检索的数据

以下内容已添加到“我的窗口”中的XAML中:

 <Window.Resources>
    <my1:myDataSet x:Key="myDataSet" />
    <CollectionViewSource x:Key="tableNameViewSource" Source="{Binding Path=tableName, Source={StaticResource myDataSet}}" />
</Window.Resources>
现在,我可以将绑定添加到我的UserControl属性:

Status="{Binding Path=statusColumn}"

<my:ucCalendarCell Name="ucControl1" Status="{Binding Path=statusColumnName}" Index="{Binding Path=indexColumnName}" Grid.Column="1" Grid.Row="1" Grid.RowSpan="1" />

还有一点工作要做,以适应我的需要,但这是基本的想法。我肯定这不止是一种方法,但这对我来说应该有用。

发布完整的XAML和代码。错误1:您需要的是数据网格,而不是常规网格。您将声明多少用户控件?如果该表有10000000行怎么办?错误2:不要在基于DependencyObject的类(即UI元素)中实现INotifyPropertyChanged该表有固定数量的行和列,以及固定数量的用户控件。@HighCore-感谢您提供有关INotifyPropertyChanged的提示。我需要做的是了解如何设置DataContext,然后对属性进行绑定。
 <Window.Resources>
    <my1:myDataSet x:Key="myDataSet" />
    <CollectionViewSource x:Key="tableNameViewSource" Source="{Binding Path=tableName, Source={StaticResource myDataSet}}" />
</Window.Resources>
DataContext="{StaticResource tableNameViewSource}"
Status="{Binding Path=statusColumn}"

<my:ucCalendarCell Name="ucControl1" Status="{Binding Path=statusColumnName}" Index="{Binding Path=indexColumnName}" Grid.Column="1" Grid.Row="1" Grid.RowSpan="1" />