Datatemplate MVVM中的文本框

时间:2013-10-21 17:17:09

标签: c# xaml mvvm

我在将文本框绑定到viewmodel时遇到问题。

<DataTemplate x:Key="ContentDetail" >
   <StackPanel  Orientation="Horizontal" Height="500"">             
      <TextBlock TextWrapping="Wrap" Text="{Binding SelectedCall.CUCODE }" />
   </StackPanel>
</DataTemplate>

我知道绑定很好,因为它也绑定在datatemplate

之外
DataContext="{Binding HelpdeskViewModel, Source={StaticResource ServiceLocator}}"

dx:ThemeManager.ThemeName="VS2010" SelectedItem="{Binding SelectedCall,UpdateSourceTrigger=PropertyChanged}">

任何指针都会被感激地接受。

编辑:

<dxg:GridControl.DetailDescriptor>
  <dxg:TabViewDetailDescriptor>
      <dxg:TabViewDetailDescriptor.DetailDescriptors>
         <dxg:ContentDetailDescriptor ContentTemplate="{StaticResource ContentDetail}" HeaderContent="More Detail" >
         </dxg:ContentDetailDescriptor>
      </dxg:TabViewDetailDescriptor.DetailDescriptors>
    </dxg:TabViewDetailDescriptor>
   </dxg:GridControl.DetailDescriptor>

1 个答案:

答案 0 :(得分:0)

模板中的项目绑定到模板中的当前项目(因此,此范围中的datacontext不是窗口的viewmodel,而是当前项目。)

我假设SelectedCall是窗口viewmodel上的属性,而不是每个绑定项上的属性,因此您无法访问它。如果它也是每个模型的属性,那么只需绑定到CUCODE,否则,如果它是每个窗口项目一个,则必须追溯到祖先窗口&amp;绑定到窗口的datacontext,而不是在模板的上下文中为您自动设置的那个。

你可能正在寻找类似的东西

<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=SelectedCall.CUCODE }}" />