网格的动态内容

时间:2016-04-07 07:31:03

标签: c# wpf binding

我的数据模型具有枚举类型的属性。我想知道是否有办法根据枚举类型的值动态放置用户控件?

我目前正在按照以下方向进行调查:

<Grid Name ="AdjustmentsArea" DockPanel.Dock ="Right" MinWidth ="100" Visibility ="Collapsed" >
    <ContentControl DataContext ="{Binding AjustmentView}">
        <Style TargetType ="model:AjustmentViews">
            <Style.Triggers>
                <DataTrigger Binding ="{Binding}"  Value ="Settings">
                    /// is it possible in principle to point a user control using a Setter ??? 
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ContentControl>
</Grid>

也许我走错了路。但我想知道(学习)是否有可能通过动态创建这个requiremet来创建用户控件的实例,但不能使用hide / show exised元素方法。 你会推荐什么?

1 个答案:

答案 0 :(得分:2)

您可以根据触发器绑定值设置不同的模板

<ContentControl DataContext ="{Binding AjustmentView}">
<ContentControl.Style>
<Style TargetType ="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding}" Value ="Settings">
   <Setter Property="Template">
      <Setter.Value>
          <ControlTemplate> <!--template with UserControl here--> </ControlTemplate>
      </Setter.Value>
   </Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>

e.g。当方向更改(水平或垂直)时,WPF Slider使用此方法