C#,UWP,VS2022
我有一个下面的xaml
<StackPanel Visibility="{x:Bind WhatIsMyVisibilityState('spRegisterScreen2')}"
x:Name="spRegisterScreen2" Margin="10" HorizontalAlignment="Center"
VerticalAlignment="Center" >在代码后面
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( )函数中的逻辑更改其可见性状态。
但出于某种原因,能见度并没有改变。
问候
发布于 2022-07-12 02:41:26
更新:
如果要将StackPanel名称传递给函数,则需要传递StackPanel本身。然后在函数中获取名称。
比如:
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:
<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>代码背后:
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;
}https://stackoverflow.com/questions/72941985
复制相似问题