Если вы напрямую используете исходный код Template10 для отладки ValueWhenConverter , вы увидите, что на самом деле это нулевое значение, если вы установите <x:String ></x:String>
.
Таким образом, когда значение пути привязки равно string.Empty
, вы можете напрямую изменить его на null
.Это самый простой способ решить эту проблему.
<Page.Resources>
<converters:ValueWhenConverter x:Key="VisibleWhenTrueConverter">
<converters:ValueWhenConverter.When>
<x:String></x:String>
</converters:ValueWhenConverter.When>
<converters:ValueWhenConverter.Value>
<Visibility>Visible</Visibility>
</converters:ValueWhenConverter.Value>
<converters:ValueWhenConverter.Otherwise>
<Visibility>Collapsed</Visibility>
</converters:ValueWhenConverter.Otherwise>
</converters:ValueWhenConverter>
</Page.Resources>
<Grid>
<TextBlock Text="Hello Admin" Visibility="{x:Bind IsAdmin, Converter={StaticResource VisibleWhenTrueConverter}}" />
</Grid>
public sealed partial class MainPage : Page
{
private string _IsAdmin;
public string IsAdmin
{
get { return _IsAdmin; }
set
{
if (value == string.Empty)
{
_IsAdmin = null;
}
else
{
_IsAdmin = value;
}
}
}
public MainPage()
{
this.InitializeComponent();
IsAdmin = string.Empty; ;
}
}