检查元素是否已折叠或可见

时间:2016-12-10 10:34:34

标签: c# xaml visual-studio-2015 uwp uwp-xaml

我想检查一个元素是否已折叠或可见,因此我可以取消隐藏或隐藏它,但我一直收到错误

  

CS0029无法将类型'Windows.UI.Xaml.Visibility'隐式转换为'bool。

代码:

if (Test1.Visibility == Visibility.Visible)
{
    Test1.Visibility = Visibility.Collapsed;
}

2 个答案:

答案 0 :(得分:1)

是的,您无法直接在控件可见性属性中设置true false。

可见性属性仅接受Visibility.Visible / Visibility.Hide / Visibility.collapsed

  1. 可见 - >鉴于控制的可见性
  2. 隐藏 - >隐藏控件但空白区域(顶部和底部控件之间的顶盖)可用
  3. 折叠 - >隐藏控件并删除空白区域。
  4. 如果要在控件可见性中指定true / false值,则需要使用转换器。

    转换器类:

     <UserControl x:Class="WpfApplication1.UserControl1"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                xmlns:local="clr-namespace:WpfApplication1"
                 d:DesignHeight="300" d:DesignWidth="300">
        <UserControl.Resources>
            <local:BooleanToVisibilityConverter x:Key="boolToVisibilityConverter"/>
        </UserControl.Resources>
        <Grid>
            <TextBox Text="{Binding Name}" Visibility="{Binding IsVisibileName, Converter={StaticResource boolToVisibilityConverter}}" />
        </Grid>
    </UserControl>
    

    XAML:

    首先添加名称空间,然后将参考和调用转换器添加到控件中,如下面的文本框。

    $scope.getCharacterInfo = function(callback) {
        temp = $http.get('https://eu.api.battle.net/wow/character/' + $rootScope.current_user_realm + '/' + $rootScope.current_user + '?locale=en_GB&apikey=hidden');
        temp.then(function onSuccess(response){
            $scope.charInfo = response.data;
            $scope.charInfo.thumbnail = "https://render-api-eu.worldofwarcraft.com/static-render/eu/" + response.data.thumbnail
            console.log("$scope.charinfo = " + $scope.charInfo)
            console.log("response.data = " + response.data)
            if(callback) {
                callback();
            }
        })
    }
    

答案 1 :(得分:0)

我尝试这些代码而且没有错误

if (Test1.Visibility == Visibility.Visible)
 {
Test1.Visibility = Visibility.Collapsed;
}