Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
模板中和ItemsSource属性上的wpf绑定_Wpf_Binding_Controltemplate - Fatal编程技术网

模板中和ItemsSource属性上的wpf绑定

模板中和ItemsSource属性上的wpf绑定,wpf,binding,controltemplate,Wpf,Binding,Controltemplate,我已将DataGrid的ItemsSource属性绑定到ViewModel的属性 <DataGrid ItemsSource="{Binding Path=ExcelData}" ColumnHeaderStyle="{DynamicResource ColumnHeaderStyle}" Grid.Row="1" Margin="0 10 0 10" Visibility="{Binding DisplayGridView, Converter={StaticResource boolt

我已将DataGrid的ItemsSource属性绑定到ViewModel的属性

<DataGrid ItemsSource="{Binding Path=ExcelData}" ColumnHeaderStyle="{DynamicResource ColumnHeaderStyle}" Grid.Row="1" Margin="0 10 0 10" Visibility="{Binding DisplayGridView, Converter={StaticResource booltovisibility}}" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="False" />
我同意!绑定到columnheader的对象上没有名为ComboDataSource的属性


如何将combobox绑定到其他源?

您可以通过遍历树找到另一个合适的源,因此您可以将RelativeSource标记与FindAncestor一起使用,如下所示

ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.ComboDataSource}"
当然,这意味着在
ComboBox
的祖先中有一个
DataGrid
,并且设置了DataGrids
DataContext
,它包含一个名为
ComboDataSource
的属性

对于组合框中的静态数据,我喜欢的另一个解决方案是为绑定设置一个新的源

ItemsSource = "{Binding Source={x:Static my:StaticData.MyEntries}}"
如果您使用单例管理器,您可以做到这一点

ItemsSource = "{Binding Source={x:Static my:StaticData.Instance}, Path=MyEntries}"
最后,您可以使用DataObjectProvider,虽然我自己从未真正使用过它,但应该解释一下您可以使用它做什么

ItemsSource = "{Binding Source={x:Static my:StaticData.MyEntries}}"
ItemsSource = "{Binding Source={x:Static my:StaticData.Instance}, Path=MyEntries}"