首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于控制能见度不起作用的UWP xBind函数

用于控制能见度不起作用的UWP xBind函数
EN

Stack Overflow用户
提问于 2022-07-11 16:49:56
回答 1查看 46关注 0票数 0

C#,UWP,VS2022

我有一个下面的xaml

代码语言:javascript
复制
<StackPanel  Visibility="{x:Bind WhatIsMyVisibilityState('spRegisterScreen2')}"
x:Name="spRegisterScreen2"  Margin="10" HorizontalAlignment="Center" 
VerticalAlignment="Center" >

在代码后面

代码语言:javascript
复制
public Visibility WhatIsMyVisibilityState(string uiItem)
        {
            Visibility returnValue = Visibility.Collapsed;

 if some condition is == true 
{
             returnValue = Visibility.Visible;
}
...
...
  return returnValue;
}

我看到这个条件是真的,返回值是Visibility.Visible;但是堆栈面板仍然处于折叠状态。我想知道发生了什么。调用此函数的触发点是按钮单击事件,在按钮的末尾,我调用“this.Bindings.Update()”刷新屏幕,并期望控件根据WhatIsMyVisibilityState( )函数中的逻辑更改其可见性状态。

但出于某种原因,能见度并没有改变。

问候

EN

回答 1

Stack Overflow用户

发布于 2022-07-12 02:41:26

更新:

如果要将StackPanel名称传递给函数,则需要传递StackPanel本身。然后在函数中获取名称。

比如:

代码语言:javascript
复制
public Visibility WhatIsMyVisibilityState(StackPanel uiItem) 
    {
        if (uiItem.Name.Equals("spRegisterScreen2"))
            return Visibility.Visible;
        else
            return Visibility.Collapsed;

    }


 <StackPanel  Visibility="{x:Bind WhatIsMyVisibilityState(spRegisterScreen2)}" x:Name="spRegisterScreen2" 

请确保Visibility="{x:Bind WhatIsMyVisibilityState('spRegisterScreen2')}"方法中的参数是DataContext的属性。由于您使用的是x:Bind,所以必须确保您的页面具有一个名为spRegisterScreen2的字符串属性。因此绑定表达式可以找到参数的值。

我做了一个简单的演示,您可以参考:

Xaml:

代码语言:javascript
复制
    <Grid>
    <StackPanel  Visibility="{x:Bind WhatIsMyVisibilityState(Test),Mode=OneWay}" x:Name="spRegisterScreen2" 
                 Background="Red"
                 Width="200" Height="200"
                 Margin="10" HorizontalAlignment="Center" 
                 VerticalAlignment="Center" />
</Grid>

代码背后:

代码语言:javascript
复制
  public string Test { get; set; }
    public MainPage()
    {
        this.InitializeComponent();
        Test = "12";
    }

    public Visibility WhatIsMyVisibilityState(string uiItem) 
    {
        if (uiItem.Equals("12"))
            return Visibility.Visible;
        else
            return Visibility.Collapsed;

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72941985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档