Конвертер виден, когда пустой - PullRequest
0 голосов
/ 24 февраля 2019

Как мне сделать конвертер VisibleWhenEmptyString.Я сделал это, как показано ниже, но это не работает.С уважением

    <converters:ValueWhenConverter x:Key="VisibleWhenEmptyString">
    <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>

1 Ответ

0 голосов
/ 25 февраля 2019

Если вы напрямую используете исходный код Template10 для отладки ValueWhenConverter , вы увидите, что на самом деле это нулевое значение, если вы установите <x:String ></x:String>.

enter image description here

Таким образом, когда значение пути привязки равно 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; ;
    }
}
...