Ala*_*ain 3 c# wpf xaml triggers .net-4.0
我正在尝试设置一个基于DataTrigger更改的ContentTemplate.从语法上讲,我觉得这应该可行,但在尝试呈现页面时会导致堆栈溢出:
<ItemsControl ItemsSource="{Binding Path=ExtendedFieldCollection}" ItemTemplate="{StaticResource RequiredFieldsTemplate}" />
<!--Where-->
<DataTemplate x:Key="RequiredFieldsTemplate">
<ContentPresenter>
<ContentPresenter.Style>
<Style TargetType="ContentPresenter">
<Setter Property="ContentTemplate" Value="{x:Null}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsRequired}" Value="True">
<Setter Property="ContentTemplate" Value="{StaticResource MyFieldDisplayTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentPresenter.Style>
</ContentPresenter>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
简单地说
<DataTemplate x:Key="RequiredFieldsTemplate">
<ContentPresenter ContentTemplate="{StaticResource MyFieldDisplayTemplate}" />
Run Code Online (Sandbox Code Playgroud)
工作正常 - 但我想要完成的是绑定到字段列表,但只显示必填字段.我不能只使用Visibility = collapsed,实例化中的所有自定义控件都有巨大的开销MyFieldDisplayTemplate.我的目标是让非必需字段在ItemsControl中具有完全不同(空)的控件模板.
有关如何设置此触发器的任何想法?
我想通过这个问题磕磕绊绊:WPF:如何为内容控制设置数据模板触发器?
我应该使用ContentControl - 而不是ContentPresenter.奇怪的是,当你以一种方式使用它们时,两者的行为相同,但是当你想要使用触发器时则完全不同.要一如既往地学习.
<DataTemplate x:Key="RequiredFieldsTemplate">
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentPresenter">
<Setter Property="ContentTemplate" Value="{x:Null}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsRequired}" Value="True">
<Setter Property="ContentTemplate" Value="{StaticResource MyFieldDisplayTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4908 次 |
| 最近记录: |