"Der verknüpfbaren Eigenschaft nicht gefunden in der Art" Fehler bei der Verwendung eines dependency-Eigenschaft in Silverlight
Ich versuche zu tun, einige Beispiel-Anwendungen mit Dependency Property in einem DataGrid,aber als ich versuchte, starten Sie die Applikation, erhalte ich einen Laufzeit-Ausnahme
Der verknüpfbaren Eigenschaft 'SelectedColumnIndex' wurde nicht gefunden in der Art
'CustomDependencyProperty'. [Zeile: 17 Position: 74]
Dies ist der code, den ich verwendet, um zu deklarieren, mein Abhängigkeitseigenschaft
public class CustomDependencyProperty : DataGrid
{
public static DependencyProperty SelectedColumnIndexProperty = DependencyProperty.Register("SelectedColumnIndex",
typeof(object),
typeof(DataGrid),
new PropertyMetadata(0));
public int SelectedColumnIndex
{
get
{
return (int)GetValue(SelectedColumnIndexProperty);
}
set
{
SetValue(SelectedColumnIndexProperty, value);
}
}
}
Und das ist mein XAML code
<UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" x:Class="BindingDictionary.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="clr-namespace:BindingDictionary"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<UserControl.Resources>
<local:SimpleConverter x:Key="myConverter"></local:SimpleConverter>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<sdk:DataGrid x:Name="dataGrid"
AutoGenerateColumns="True"
ItemsSource="{Binding Responses}"
local:CustomDependencyProperty.SelectedColumnIndex="{Binding Index,Mode=TwoWay}">
</sdk:DataGrid>
<TextBlock x:Name="DisplayIndex" Text="{Binding Index}" />
</Grid>
</UserControl>
Ich bin nicht in der Lage, um herauszufinden, was genau das problem ist.Gibt es etwas falsch in der Art, wie ich deklarieren Sie eine Abhängigkeitseigenschaft?
Bitte helfen.
Dank,
Alex
InformationsquelleAutor wizzardz | 2011-11-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie brauchen eine angefügte Eigenschaft hier. Versuchen Sie,
DependencyProperty.Register
zu
DependencyProperty.RegisterAttached
.Auch
typeof(object) should be typeof(int)
.UPDATE
Ja, dies wird dein problem lösen, aber ich denke, Sie nicht wirklich brauchen, eine angefügte Eigenschaft hier, wie Sie Ihre Klasse ist die Verlängerung der
DataGrid
Klasse. Eine normale dependency property ist alles, was Sie brauchen. So halten Sie Ihren vorhandenen code und ändernzu
und im xaml-Code, können Sie einfach verwenden Sie diese erweiterte Klasse direkt, so etwas wie dieses,
Möchten Sie vielleicht ändern Sie den Namen 'CustomDependencyProperty' etwas mehr sein meanful wie
ExtendedDataGrid
.So, ich denke, die Schlußfolgerung ist Sie in der Regel zwei Methoden zum erstellen eine bindbare Eigenschaft, entweder durch die Ausweitung der Kontrolle und die Schaffung eines normalen Abhängigkeitseigenschaft verwenden, oder Sie erstellen eine statische Klasse mit einer angefügten Eigenschaft.
Hoffe, das hilft. 🙂
Ich habe aktualisiert die Antwort, hoffentlich geben Sie einige Klarstellungen über den Unterschied von ap und dp. 🙂
:Kennzeichnung dieser eine 'Antwort', wie es hat eine bessere Erklärung 🙂
Danke! Ihr eine gültige Antwort zu. 🙂
InformationsquelleAutor Justin XL
Ich denke, ich kann diese Frage beantworten jetzt.Diese Ausnahme ist einfach erklärt, was genau die Unterschiede zwischen einem
AttachedProperty
und einDependencyProperty
.Verwenden Sie eine Abhängigkeitseigenschaft SelectedColumnIndex sollte ich neu definieren, meine
DataGrid
xaml wie dieseInformationsquelleAutor wizzardz