2011-11-16 12 views
9

Ho provato a eseguire this example ma ho avuto un problema vincolante.Rilegatura WPF: la risorsa statica non può essere risolta

Designer mette in evidenza l'errore The resource "monthCollection" could not be resolved

Come posso usare Utility.MonthCollection come risorsa locale?

XAML parte:

<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# parte:

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

Si prega di inviare la parte pertinente del codice piuttosto che il collegamento a un sito Web o blog esterno. –

risposta

12

Ti manca questo bit:

-> questa classe Utility può essere istanziato come una risorsa < - e quindi a cui si fa riferimento nella creazione di ComboBox.

Sembrerà qualcosa di simile:

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

Questo bit: {Binding Source={StaticResource monthCollection}, Path=MonthCollection dice di trovare la risorsa statica monthCollection e su di esso utilizzare la proprietà MonthCollection quindi è necessario prima creare un'istanza dell'oggetto che ha ` MonthCollection come proprietà e quindi fa riferimento a tale risorsa statica.

Si avrà probabilmente bisogno anche di un qualcosa di dichiarazione come questa aggiunta alla parte superiore del file:

xmlns:local="clr-namespace:YourNamespaceHere" 

codice non testato qui di seguito:

<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

Si prega di aggiungere una voce come qui di seguito in App.xaml :

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