2016-10-03 2 views
1

UWP 응용 프로그램에서 햄버거 버튼을 만들기 위해 BooleanToVisibilityConverter을 사용하여 RSSReader Example처럼 햄버거 버튼의 상태를 변경하려고합니다. MainPage.xaml을UWP에서 BooleanToVisibilityConverter를 사용하는 방법

using System; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Data; 

namespace UWPTest.Common { 
    public class BooleanToVisibilityConverter : IValueConverter { 
     public object Convert(object value, Type targetType, object parameter, string language) => 
      (bool)value^(parameter as string ?? string.Empty).Equals("Reverse") ? 
       Visibility.Visible : Visibility.Collapsed; 

     public object ConvertBack(object value, Type targetType, object parameter, string language) => 
      (Visibility)value == Visibility.Visible^(parameter as string ?? string.Empty).Equals("Reverse"); 

    } 
} 

다음 로 가져올 :

<Page 
    x:Class="UWPTest.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:UWPTest" 
    xmlns:common="using:UWPTest.Common" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d"> 
    <Page.Resources> 
     <common:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> 
    </Page.Resources> 
    <Grid Background="Transparent"> 
     <ToggleButton x:Name="TogglePaneButton" 
      Visibility="{x:Bind ViewModel.IsInDetailsMode, Mode=OneWay, ConverterParameter=Reverse, Converter={StaticResource BooleanToVisibilityConverter}}" 
      Margin="0" 
      TabIndex="1" 
      Checked="{x:Bind CheckTogglePaneButtonSizeChanged}" 
      Unchecked="{x:Bind CheckTogglePaneButtonSizeChanged}" 
      IsChecked="{Binding IsPaneOpen, ElementName=RootSplitView, Mode=TwoWay}" 
      AutomationProperties.Name="Menu" ToolTipService.ToolTip="Menu" 
      Style="{StaticResource SplitViewTogglePaneButtonStyle}"/> 
    </Grid> 
</Page> 

인텔리을

문제는 내가 폴더 공통BooleanToVisibilityConverter.cs에게를 작성 쓴 때, 이름 "BooleanToVisibilityConverter"가 네임 스페이스에 존재하지 않음 "using : UWPTest.C ommon ". 클래스를 찾을 수없는 이유를 알 수 없습니다.

중국어 인텔리의 말의 그림 :

enter image description here

+0

IntelliSense가 항상 정확한 것은 아닙니다. 오류없이 프로젝트를 구축 할 수 있습니까? –

+0

꼭 확인하십시오. 실행시 코드가 컴파일되지 않거나 충돌이 발생합니까? 때때로 intellisense는 이러한 오류를 표시하지만 코드는 정상이며 잘 실행됩니다. –

+0

SDK 버전 14393 이상을 타겟팅하는 경우 참고로 x : Bind는 IValueConverter를 작성할 필요없이 부울을 가시성 값으로 자동 변환합니다. –

답변

3

당신이 자원 BooleanToVisibilityConverter를 추가하려면 그것의 설정 Keyboolean에 :

<common:BooleanToVisibilityConverter x:Key="boolean" /> 

그래서 바인딩해야 보이는 같은 :

Converter={StaticResource boolean} 

BooleanToVisibilityConverter의 값을 Key으로 변경할 수 있습니다.

+0

미안하지만 그건 내 바보 같은 잘못 이었어. 이 예제의 원본 코드는'Converter = {StaticResource BooleanToVisibilityConverter}'입니다. 이 오류는 ToggleButton 부분과 관련이없는 것 같습니다. – Thesharing

+0

오류를 해결 한 후에도 문제가 계속 발생합니다. – Thesharing

+0

@Thesharing 그 경우에는 표준 솔루션 만 조언 할 수 있습니다. ** 1. ** 솔루션을 재구성하십시오. ** 2. ** xaml rebuild 솔루션에서 변환기를 제거하고 다시 추가하십시오. ** 3. ** 일부 문자열 비교기로 이름과 네임 스페이스의 철자를 검사하십시오 (동일하게 보이는 다른 문자가 있음). ** 4. Visual Studio를 다시 시작하십시오. ** Decade Moon **이 (가) 제안한 컨버터 제거에 대해 생각해 볼 수는 있지만, 도움이 부족해서 반가운 소식이 필요합니다. 다른 솔루션에 대해 생각해 보겠습니다. –

관련 문제