ハックを使用する代わりに、シンプルできちんとした方法を試してみませんか? 2 つの異なるテキストを用意するのはどうですか。例えば
<Grid>
<Label Text="{Binding YourNormalTextComesHere}"
Visibility="{Binding IsUserNew, Converter={StaticResource BoolToVisibilityConv}, ConverterParameter=Not}" />
<StackPanel Orientation=Horizontal
Visibilty="{Binding IsUserNew, Converter={StaticResource BoolToVisibilityConv}}">
<Label Text="Your not registered with us. Please register "/>
<HyperLink NavigateUri="...">here</HyperLink>
</StackPanel>
</Grid>
ユーザーが新規かどうかに応じて、ウェルカム テキストまたはテキスト リンクの組み合わせが表示されます。This SO post は、 a のHyperlink
使用方法を示しています。
BooleanToVisibilityConverter
組み込み( doc ) が否定をサポートしているかどうかわからないので、実装を提供しました。サンプル コードではコンバーターをインスタンス化していないことに注意してください。
[ValueConversion(typeof (bool?), typeof (Visibility))]
public class BoolToVisibilityConverter : IValueConverter
{
public const string Invert = "Not";
private const string TypeIsNotAllowed = "The type '{0}' is not allowed.";
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var boolValue = value as bool?;
if (boolValue == null)
throw new NotSupportedException(String.Format(TypeIsNotAllowed, value.GetType().Name));
return ((boolValue.Value && !IsInverted(parameter)) || (!boolValue.Value && IsInverted(parameter)))
? Visibility.Visible
: Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
var visibilityValue = value as Visibility?;
if (visibilityValue == null)
throw new NotSupportedException(String.Format(TypeIsNotAllowed, value.GetType().Name));
return visibilityValue == Visibility.Visible && !IsInverted(parameter);
}
#endregion
private static bool IsInverted(object param)
{
var strParam = param as string;
if (param == null || string.IsNullOrEmpty(strParam))
return false;
return strParam.Equals(Invert, StringComparison.InvariantCultureIgnoreCase);
}
}
あなたは麻生に精通しているので、残りは明らかだとMVVM
思います
これが少し役立つことを願っています。