我尝试运行this example,但是遇到绑定(bind)问题。
设计器突出显示错误The resource "monthCollection" could not be resolved
如何将Utility.MonthCollection用作本地资源?
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#部分:
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();
}
}
最佳答案
您缺少这一点:
它看起来像这样:
<Application.Resources>
<local:Utility x:Key="monthCollection"/>
</Application.Resources>
该位:
{Binding Source={StaticResource monthCollection}, Path=MonthCollection
表示要查找静态资源monthCollection
并在其上使用属性MonthCollection
,因此您必须首先实例化具有`MonthCollection作为属性的对象,然后引用该静态资源。您可能还需要在文件顶部添加如下语句:
xmlns:local="clr-namespace:YourNamespaceHere"
未经测试的代码如下:
<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>