■ NullableBool 태그 확장의 Value 속성을 사용해 NULL 가능한 BOOL 값을 설정하는 방법을 보여준다.
※ 비주얼 스튜디오에서 TestProject(Unpackaged) 모드로 빌드한다.
※ TestProject.csproj 프로젝트 파일에서 WindowsPackageType 태그를 None으로 추가했다.
▶ NullableBooleanObject.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
using Microsoft.UI.Xaml; namespace TestProject; /// <summary> /// NULL 가능 객체 /// </summary> public class NullableBooleanObject : DependencyObject { //////////////////////////////////////////////////////////////////////////////////////////////////// Dependency Property ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Public #region NULL 가능 BOOL 의존 속성 - NullableBoolProperty /// <summary> /// NULL 가능 BOOL 의존 속성 /// </summary> public static readonly DependencyProperty NullableBoolProperty = DependencyProperty.Register ( nameof(NullableBool), typeof(bool?), typeof(NullableBooleanObject), new PropertyMetadata(null) ); #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Property ////////////////////////////////////////////////////////////////////////////////////////// Public #region NULL 가능 BOOL - NullableBool /// <summary> /// NULL 가능 BOOL /// </summary> public bool? NullableBool { get => (bool?)GetValue(NullableBoolProperty); set => SetValue(NullableBoolProperty, value); } #endregion } |
▶ MainPage.xaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?xml version="1.0" encoding="utf-8"?> <Page x:Class="TestProject.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:TestProject" xmlns:ctw="using:CommunityToolkit.WinUI" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" FontFamily="나눔고딕코딩" FontSize="16"> <Page.Resources> <local:NullableBooleanObject x:Name="nullableBooleanObject" NullableBool="{ctw:NullableBool Value={x:Null}}" /> </Page.Resources> <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding ElementName=nullableBooleanObject, Path=NullableBool}" /> </Page> |