Yaugen Vlasau
Yaugen Vlasau

Reputation: 2218

Dynamic content of a Grid

My data model has a property of the enumeration type. I wonder if there is way to place dynamically a user control based on the value of the enumeration type?

I am currently investigating in the following direction:

<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>

May be also I am on a wrong path. But I would like to know (learn) if it is possible to implement this requirement for dynamic content in user control, but not using hide/show exised element approach.

What would you recommend?

Upvotes: 1

Views: 76

Answers (1)

ASh
ASh

Reputation: 35646

you can set different template depending on trigger binding value

<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 uses this approach when Orientation changes (Horizontal or Vertical)

Upvotes: 3

Related Questions