Ich stieß auf seltsames Verhalten mit DataTemplate-Schlüsseln: Wenn DataType über x angegeben ist: Typ und x: Schlüssel wird angegeben über x: Statische Referenz, x: Schlüssel wird ignoriert. Ich habe eine Beispiel-App geschrieben, um es zu illustrieren.DataTemplate-Schlüssel wird ignoriert, wenn mit x angegeben: Static
XAML-Ressourcen:
<DataTemplate DataType="{x:Type wpfApplication1:TestDto}" x:Key="{x:Static wpfApplication1:DataKeys.TestDtoKey}" />
<DataTemplate x:Key="{x:Static wpfApplication1:DataKeys.TestDtoKey2}" />
<DataTemplate DataType="{x:Type wpfApplication1:TestDto}" x:Key="TestKey3" />
<DataTemplate DataType="wpfApplication1:TestDto" x:Key="{x:Static wpfApplication1:DataKeys.TestDtoKey4}" />
C#:
public class TestDto {}
public static class DataKeys
{
public static string TestDtoKey = "TestKey";
public static string TestDtoKey2 = "TestKey2";
public static string TestDtoKey4 = "TestKey4";
}
Anwendung starten, siehe this.Resources.Keys in Debugger:
{DataTemplateKey(WpfApplication1.TestDto)} object {System.Windows.DataTemplateKey}
"TestKey2" object {string}
"TestKey3" object {string}
"TestKey4" object {string}
Wie Sie im ersten Fall sehen x: Schlüssel wird ignoriert!
Kann jemand erklären, was vor sich geht? Die Dokumentation (http://msdn.microsoft.com/en-us/library/system.windows.datatemplate.datatype.aspx) besagt eindeutig, dass die Einstellung von x: Key den Ressourcenschlüssel auf das setzt, was Sie darin angeben.
Sehr ähnlich wie der Fehler. Vielleicht sollten Sie versuchen, Feedback für connect.microsoft.com zu schreiben? –