source

WPF: 콘텐츠 제어를 위한 데이터 템플릿 트리거를 설정하는 방법은 무엇입니까?

lovecheck 2023. 5. 17. 23:16
반응형

WPF: 콘텐츠 제어를 위한 데이터 템플릿 트리거를 설정하는 방법은 무엇입니까?

콤보 상자 하나와 내용 컨트롤이 포함된 사용자 컨트롤을 만들고 싶습니다.콤보 상자에서 선택한 내용에 따라 내용 컨트롤이 사용할 데이터 템플릿이 결정됩니다.저는 제가 성취하고자 하는 것이 무엇인지를 거의 보여주는 이 기사를 읽었습니다.

콤보 상자는 다음으로 가득 차 있습니다.enum ModelType가치들, 그것은 될 수 있습니다.Person또는Company사용자가 선택하는 경우Person콘텐츠 제어는 다음을 사용해야 합니다.personTemplate데이터 템플릿companyTemplate위해서Company.

콘텐츠 제어를 위한 XAML 코드가 막혔습니다.다음은 제가 만든 것이지만 작동할 수는 없습니다.

<UserControl.Resources>
  ...
  <DataTemplate x:Key="personTemplate" ...>
  <DataTemplate x:Key="companyTemplate" ...>
  ...
</UserControl.Resources>
...
<ContentControl x:Name="Account">
  <ContentControl.ContentTemplate>
    <DataTemplate>
      <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding AccountType}" Value="Person">
        <!-- I doubt the Value property is set correctly. -->
        <!-- It should be a value of an enum ModelType -->
          <Setter 
              TargetName="Account" 
              Property="ContentTemplate" 
              Value="{StaticResource personTemplate}" />
          <!-- The setter is unaware of the target name, i.e. content control -->
        </DataTrigger>
        <DataTrigger Binding="{Binding AccountType}" Value="Company">
          <Setter 
              TargetName="Account" 
              Property="ContentTemplate" 
              Value="{StaticResource companyTemplate}" />
        </DataTrigger>
      </DataTemplate.Triggers>
    </DataTemplate>
  </ContentControl.ContentTemplate>                    
</ContentControl>

도와주세요, 감사합니다.

저는 실제로 그것을 작동시켰습니다.:)

XAML은 다음과 같이 구성됩니다.

<ContentControl Content="{Binding}">
  <ContentControl.Style>
    <Style TargetType="ContentControl">
      <Style.Triggers>
        <DataTrigger Binding="{Binding AccountType}" Value="Person">
          <Setter Property="ContentTemplate" Value="{StaticResource personTemplate}" />
        </DataTrigger>
        <DataTrigger Binding="{Binding AccountType}" Value="Company">
          <Setter Property="ContentTemplate" Value="{StaticResource companyTemplate}" />
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </ContentControl.Style>
</ContentControl>

열거형의 값도 잘 작동합니다.

언급URL : https://stackoverflow.com/questions/5771362/wpf-how-to-set-the-data-template-trigger-for-content-control

반응형