模板中和ItemsSource属性上的wpf绑定
我已将DataGrid的ItemsSource属性绑定到ViewModel的属性模板中和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="{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
,并且设置了DataGridsDataContext
,它包含一个名为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}"