空转时可见转换器

问题描述 投票:0回答:1

如何制作转换器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>
c# xaml uwp template10
1个回答
0
投票

如果您直接使用Template10源代码来调试ValueWhenConverter,那么当您设置<x:String ></x:String>时,您会看到它实际上是一个空值。

enter image description here

因此,当您的Binding路径值为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; ;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.