Bevor Sie antworten, sehen Sie sich this post an.Wie kann ich innerhalb einer Vorlage in einer Universal Windows App an einen Nullwert binden?
Wenn Sie zuerst eine Antwort erhalten, kann das Problem möglicherweise behoben werden.
Dies ist ein Problem, das mit Windows 10 (Universal Apps) begonnen. In Windows 8.1 und jeder anderen XAML-Technologie funktionierte diese Technik einwandfrei. Hier ist die Einrichtung in einem leeren Universal-App-Projekt:
1. Statische Klasse mit angebrachtem Property
Erstellen Sie eine Klasse, die einen angefügten Eigenschaft des Typs beherbergt Brush
. Setzen Sie dieses irgendwo in das Projekt ein.
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. ein Steuerelement Ihrer MainPage.xaml hinzufügen
In der Haupt-Seite aufgeführten Eigenschaft verwendet, ein ContentControl
mit einer benutzerdefinierten Vorlage hinzufügen, die ein Grid
mit seiner Hintergrundfarbe auf den Akzent gesetzt hat Bürste. Der Akzentpinsel ist in einem Stil gesetzt.
<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>
Wenn Sie die App jetzt ausführen, wird sie mit einem grünen Hintergrund angezeigt. Funktioniert alles. Wenn Sie jedoch den Wert {x:Null}
festlegen, wird eine Ausnahme ausgelöst.
<Page.Resources>
<Style x:Key="MyControl"
TargetType="ContentControl">
<Setter Property="local:MySettings.AccentBrush"
Value="{x:Null}" /> <!-- Null value here -->
</Style>
</Page.Resources>
Möchte jemand eine Aufnahme machen?
Wie wäre es versucht, 'Pinsel?' Statt 'Brush' zu BgNull verlinken . –
'Brush' ist eine Klasse. 'Nullable' ist nur auf Strukturen anwendbar. –
Laith
Warum möchten Sie den Wert als null setzen? – Lance