C# 数据上下文之外的绑定
我有一个DataTemplate用于模板化ItemsControl的项目,这些项目是时间表的详细信息。 我有两个文本框,表示时间表详细信息的某些值,但它们的IsEnabled属性取决于时间表本身,而不是详细信息C# 数据上下文之外的绑定,c#,wpf,mvvm,binding,C#,Wpf,Mvvm,Binding,我有一个DataTemplate用于模板化ItemsControl的项目,这些项目是时间表的详细信息。 我有两个文本框,表示时间表详细信息的某些值,但它们的IsEnabled属性取决于时间表本身,而不是详细信息 <ItemsControl ItemsSource="{Binding Path=TimeSheet.TimeSheetDetails}" ItemTemplate="{StaticResource TimeSheetDetail}" /> <DataT
<ItemsControl
ItemsSource="{Binding Path=TimeSheet.TimeSheetDetails}"
ItemTemplate="{StaticResource TimeSheetDetail}"
/>
<DataTemplate x:Key="TimeSheetDetail">
<TextBox
Text="{Binding Houre}"
IsEnabled="Binding ??????">
</DataTemplate>
由于在TimeSheetDetails中找不到IsEnabled属性,但可以在我的ViewModel中找到,因此我想直接绑定到我的ViewModel的属性,但当我尝试从我的DataTemplate绑定到我的ViewModel时,它似乎只在TimeSheetDetail中查找
如何直接访问ViewModel的公共属性?您可以绑定到父级的
DataContext
:
{Binding DataContext.IsEnabled,
RelativeSource={RelativeSource FindAncestor, AncestorType=ItemsControl}}
我也遇到了同样的问题:[Ty alot,非常有用,但您犯了一个小错误,它更像是IsEnabled=“{Binding DataContext.IsEnabled,RelativeSource={RelativeSource FindAncestor,AncestorType=ItemsControl}”,因为时间表alredy是数据上下文。