2011-11-16 4 views
9

J'ai essayé de lancer this example mais j'ai rencontré un problème de liaison.Liaison WPF: la ressource statique ne peut pas être résolue

Designer met en évidence l'erreur The resource "monthCollection" could not be resolved

Comment puis-je utiliser Utility.MonthCollection comme ressource locale?

partie XAML:

<Window x:Class="FaceReport.WindowMain" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

Title="Rapor" Height="402" Width="600" WindowState="Normal"> 
<Grid Name="gridMain" x:Uid="uidGridMain"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <ComboBox SelectedIndex="0" 
       DisplayMemberPath="Value" SelectedValuePath="Key" Margin="132,9,200,0" 
       Grid.Row="3" Height="24" VerticalAlignment="Top" Name="cbBind" 

       ItemsSource="{Binding Source={StaticResource Utility.ReportForCollection}, 
       Path=Utility.ReportForCollection}"     
       /> 
</Grid> 
</Window> 

C# partie:

namespace FaceReport 
{ 
internal class Utility 
{ 
    public enum ReportFor 
    { 
     Choose, 
     All, 
     Group, 
     Person 
    } 

    private static Dictionary<ReportFor, string> _dictReportFor; 
    public static Dictionary<ReportFor, string> ReportForCollection 
    { 
     get 
     { 
      return _dictReportFor; 
     } 
    } 

    static Utility() 
    { 
     //initialize the collection with user friendly strings for each enum 
     _dictReportFor = new Dictionary<ReportFor, string>(){ 
      {ReportFor.Choose, "Lütfen seçiniz..."},   
      {ReportFor.All, "Herkes"}, 
      {ReportFor.Group, "Grup"}, 
      {ReportFor.Person, "Şahıs"}}; 
    } 
} 

/// <summary> 
/// Application's main form 
/// </summary> 
public partial class WindowMain : Window 
{ 
    /// <summary> 
    /// Constructor 
    /// </summary> 
    public WindowMain() 
    { 
     InitializeComponent(); 
    } 
} 
+0

Veuillez publier la partie appropriée de votre code plutôt que de créer un lien vers un site Web ou un blog externe. –

Répondre

12

vous manque ce bit:

-> cette classe utilitaire peut être instancié comme une ressource < - puis référencé dans la création de ComboBox.

Ça va ressembler à quelque chose comme ceci:

<Application.Resources> 
    <local:Utility x:Key="monthCollection"/> 
</Application.Resources> 

Ce bit: {Binding Source={StaticResource monthCollection}, Path=MonthCollection dit pour trouver la ressource statique monthCollection et il utiliser la propriété MonthCollection de sorte que vous devez d'abord instancier l'objet qui a ` MonthCollection en tant que propriété, puis référence cette ressource statique.

Vous aurez probablement besoin aussi une déclaration quelque chose comme ceci ajouté au début de votre fichier:

xmlns:local="clr-namespace:YourNamespaceHere" 

code non testé ci-dessous:

<Window x:Class="FaceReport.WindowMain" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="clr-namespace:FaceReport" 

Title="Rapor" Height="402" Width="600" WindowState="Normal"> 

<Application.Resources> 
    <local:Utility x:Key="reportCollection"/> 
</Application.Resources> 

<Grid Name="gridMain" x:Uid="uidGridMain"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <ComboBox SelectedIndex="0" DisplayMemberPath="Value" SelectedValuePath="Key" Margin="132,9,200,0" Grid.Row="3" Height="24" VerticalAlignment="Top" Name="cbBind" 
    ItemsSource="{Binding Source={StaticResource reportCollection}, Path=ReportForCollection}" /> 
</Grid> 
</Window> 
0

S'il vous plaît ajouter une entrée comme ci-dessous dans app.xaml :

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/Skins/ControlSkin.xaml"> 
     </ResourceDictionary> 
      <ResourceDictionary Source="/Skins/ListBox.xaml"> 
      </ResourceDictionary> 
     </ResourceDictionary.MergedDicionaries> 
    </ResourceDictionary> 
</Application.Resources> 
Questions connexes