Yanıt vermeden önce, this post'a bakın.Evrensel Windows uygulamasında şablon içindeki boş değere nasıl bağlanabilirim?
Bunun için bir yanıt almak, aşağıdaki sorunu çözebilir.
Bu sadece Windows'un 10 (Evrensel Uygulamaları) ile başlayan bir sorundur. Windows 8.1'de ve diğer her XAML teknolojisinde, bu teknik kusursuz bir şekilde çalıştı. Ekli Mülkiyet
tip Brush
bir ekli özelliği barındıran bir sınıf oluşturun ile
1. Statik sınıfı: Burada boş bir evrensel uygulama projesinde tuzak. Bunu projenin herhangi bir yerine koyun.
public static class MySettings { public static Brush GetAccentBrush(DependencyObject d) { return (Brush)d.GetValue(AccentBrushProperty); } public static void SetAccentBrush(DependencyObject d, Brush value) { d.SetValue(AccentBrushProperty, value); } public static readonly DependencyProperty AccentBrushProperty = DependencyProperty.RegisterAttached( "AccentBrush", typeof(Brush), typeof(MySettings), null ); }
2.
aksanıyla ayarlı onun arka plan rengiyle birGrid
sahip özel bir şablonla bir ContentControl
ekleyin ana sayfasında ekli özelliği kullanarak MainPage.xaml bir denetimi ekleyin fırça. Aksanlı fırça bir stilde ayarlanır.
<Page x:Class="UniversalTest.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="using:UniversalTest"
mc:Ignorable="d">
<Page.Resources>
<Style x:Key="MyControl"
TargetType="ContentControl">
<Setter Property="local:MySettings.AccentBrush"
Value="Green" /> <!-- Setting value here -->
</Style>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ContentControl Style="{StaticResource MyControl}">
<ContentControl.Template>
<ControlTemplate TargetType="ContentControl">
<Grid Background="{TemplateBinding local:MySettings.AccentBrush}"> <!-- Using value here -->
<TextBlock Text="Howdy World!" />
</Grid>
</ControlTemplate>
</ContentControl.Template>
</ContentControl>
</Grid>
</Page>
Uygulamayı şimdi çalıştırırsanız, yeşil bir arka plan ile görünür. Herşey çalışıyor. Ancak, değeri {x:Null}
olarak ayarlarsanız, bir istisna atar.
<Page.Resources>
<Style x:Key="MyControl"
TargetType="ContentControl">
<Setter Property="local:MySettings.AccentBrush"
Value="{x:Null}" /> <!-- Null value here -->
</Style>
</Page.Resources>
Bu konuda şüphe çekmek isteyen var mı?
bağlantı vermenizi stil kullanımda
sonra kaynak dosyasında, sonuçlar verdiğini saptadık?' Yerine Brush' 'arasında . –
'Fırça' bir sınıftır. 'Nullable' yalnızca yapılara uygulanabilir. –
Laith
Değeri null olarak niçin ayarlamak istersiniz? – Lance