Silverlightでログインステータスコントロールを作成しようとしていますが、ここで複数のControlTemplateを使用して条件付きコンテンツを定義します。SilverlightでLoginStatusControlを作成する
これまでのところ、私はその後、私はスタイルでテンプレートを定義した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をオーバーライドするために条件付きテンプレートを接続するのが難しいです。
検索中にthis questionが見つかりましたが、テンプレートバインディングを使用しようとしましたが、動作させることができませんでした。
ユーザーがログインしている場合にこの条件付きテンプレートを表示するにはどうしますか?この問題を解決する別の方法がありますか?私は、コントロールのDataContextが変更されたときに動的にテンプレートを更新できるソリューションを考え出しています。