io sono nuovo per creare UserControl e ora sto cercando di personalizzare il modello UserControl come di seguito:Come funziona TemplateBinding nel modello UserControl?
<UserControl x:Class="WpfApplication1.PieButton"
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"
d:DesignHeight="300" d:DesignWidth="300" Loaded="OnLoaded">
<UserControl.Template>
<ControlTemplate>
<Path Name="path" Stroke="Aqua" StrokeThickness="3">
<Path.Fill>
<SolidColorBrush Color="{TemplateBinding Fill}" />
</Path.Fill>
<Path.Data>
......
</UserControl>
Allo stesso tempo, ho creare il DependencyProperty in codice di back-end:
public partial class PieButton : UserControl
{
public PieButton()
{
InitializeComponent();
}
private void OnLoaded(object sender, RoutedEventArgs e)
{
}
public Color Fill
{
get { return (Color)GetValue(FillProperty); }
set { SetValue(FillProperty, value); }
}
public static readonly DependencyProperty FillProperty =
DependencyProperty.Register("Fill", typeof(Color), typeof(PieButton));
......
Voglio usare TemplateBinding
in XAML per legare la proprietà Fill
del mio PieButton per riempire l'oggetto del percorso. Visual Studio Designer mi avvisa che "la proprietà Fill non è accessibile o riconosciuta".
Sulla base della mia comprensione, la TemplateBinding
trovare il nome della proprietà dall'elemento che si applicano questa ControlTemplate, che dovrebbe essere PieControl
qui, ma perché il Fill
proprietà non può accedere qui?
BTW,
ho testare il seguente vincolante, e può funzionare per me
Color="Binding Fill,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}}"
Ma io continuo a pensare che il TemplateBinding dovrebbe essere in grado di lavorare sotto questo scenario, quindi per favore sottolineare colpa mia Qui. Grazie.
La ringrazio molto per questo. – m4design