我有一个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
之外的绑定,它按预期工作。
有什么建议吗?
答案 0 :(得分:0)
尝试:
Text="{Binding Path=DataContext.SearchQuery, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}"