Я пытаюсь создать элемент управления статусом входа в Silverlight, где я буду использовать несколько шаблонов ControlTemplates для определения условного содержимого.
Пока что я создал LoginStatusControl
public class LoginStatusControl : ContentControl
{
// these are actually Depedency Properties
public ControlTemplate LoggedInTemplate { get; set; }
public ControlTemplate AnonymousTemplate { get; set; }
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
var user = this.DataContext as User;
if (user == null && this.AnonymousTemplate != null)
{
this.Template = this.AnonymousTemplate;
}
else if (this.LoggedInTemplate != null)
{
this.Template = this.LoggedInTemplate;
}
}
}
Тогда я определил шаблоны в стиле.
<Style x:Key="UserStatusStyle" TargetType="local:LoginStatusControl">
<Setter Property="LoggedInTemplate">
<Setter.Value>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="User " />
<TextBlock Text="{Binding FirstName}" />
<TextBlock Text=" " />
<TextBlock Text="{Binding LastName}" />
<TextBlock Text=" is logged in" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="AnonymousTemplate">
<Setter.Value>
<ControlTemplate>
<TextBlock Text="Please create your profile" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
У меня проблемы с подключением условных шаблонов для переопределения ControlTemplate.
Во время поиска я нашел этот вопрос и попытался использовать привязку шаблона, но я не смог заставить это работать.
Есть ли способ заставить эти условные шаблоны отображаться, если пользователь вошел в систему или нет? Есть ли другой способ решения этой проблемы, который мне не хватает? Я надеюсь найти решение, которое может динамически обновлять шаблон при изменении DataContext элемента управления.