datatemplate中的datacontext问题

时间:2015-01-15 11:33:35

标签: c# wpf

我有一个ContentControl,它有一组触发器,当ContentControl的Content属性击中Style.Triggers之一时将被触发

   <ContentControl  Content="{Binding SelectedSearchQueryParameter.DataType}" Grid.Row="0" VerticalContentAlignment="Center" Height="25"  MaxWidth="200">
     <ContentControl.Style>
           <Style TargetType="{x:Type ContentControl}">
                <Setter Property="ContentTemplate" Value="{StaticResource TextBoxTemplate}" />
                   <Style.Triggers>
                      <DataTrigger Binding="{Binding SelectedSearchQueryParameter.DataType}" Value="{x:Type sys:DateTime}">
                         <Setter Property="ContentTemplate" Value="{StaticResource DateTimeTemplate}" />
                      </DataTrigger>
                   </Style.Triggers>
           </Style>
      </ContentControl.Style>
    </ContentControl>

此ContentControl按预期工作,它将在TextBox和自定义UserControl之间切换。问题是我无法将我的ViewModel中的属性绑定到Text

中定义的TextBox中的属性DataTemplate
<DataTemplate x:Key="TextBoxTemplate">
   <StackPanel>
     <TextBox HorizontalAlignment="Stretch" MinWidth="200" Text="{Binding SearchQuery, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}"/>
   </StackPanel>
</DataTemplate>

我还试图明确地将DataContext设置为stackpanel上的viewmodel,也没有运气。

我测试了ResourceDictionary之外的绑定,它按预期工作。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

尝试:

Text="{Binding Path=DataContext.SearchQuery, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}"