Я пытаюсь изменить DataTemplate для объектов в моем приложении WPF в соответствии с конкретным логическим значением. Когда значение «True», я хочу, чтобы DataTemplate был чем-то, а когда значение «False», я хочу, чтобы DataTemplate был чем-то другим.Изменение DataTemplates во время выполнения с использованием DataTriggers
Я пробовал написать этот код, но до сих пор я заканчиваю раздражающим «исключением из памяти».
<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>
Если у кого есть подсказка, как исправить это, пожалуйста, дайте мне знать.
Вы должны сначала объявить ContentControl и то DataTriggers. Иногда это важно для разрешения ссылок на имена. – LPL