Изменение DataTemplates во время выполнения с помощью DataTriggers

Я пытаюсь изменить DataTemplate для объектов в моем приложении WPF в соответствии с определенным логическим значением. Когда значение «Истина», я хочу, чтобы DataTemplate был чем-то, а когда значение «Ложь», я хочу, чтобы DataTemplate был чем-то другим.

Я пытался написать этот код, но до сих пор я получаю раздражающее «исключение нехватки памяти».

<DataTemplate DataType="{x:Type vm:MyObjectViewModel}">
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding Visible}" Value="False">
            <Setter TargetName="MainTemplateGrid" Property="Content">
                <Setter.Value>
                    <Ellipse Width="50" Height="50" Fill="Red" />
                </Setter.Value>
            </Setter>
        </DataTrigger>
        <DataTrigger Binding="{Binding Visible}" Value="True">
            <Setter TargetName="MainTemplateGrid" Property="Content">
                <Setter.Value>
                    <Image Source="{Binding Icon}" Opacity="{Binding Visible, Converter={StaticResource VisibilityConverter}}" />
                </Setter.Value>
            </Setter>
        </DataTrigger>
    </DataTemplate.Triggers>
    <ContentControl x:Name="MainTemplateGrid" />
</DataTemplate>

Если кто-нибудь знает, как это исправить, пожалуйста, дайте мне знать.

5
задан Jonathan Perry 2 July 2012 в 12:02
поделиться