WPF绑定:无法解析静态资源
本文关键字:静态 资源 绑定 WPF | 更新日期: 2023-09-27 18:14:55
我试着运行这个例子,但是我得到了绑定问题。
设计器突出显示错误The resource "monthCollection" could not be resolved
如何使用实用程序。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();
}
}
你错过了这一点:
->这个实用程序类可以实例化为资源<-然后在ComboBox创建中引用。
它看起来像这样:
<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>
请在app.xaml:
中添加如下条目<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Skins/ControlSkin.xaml">
</ResourceDictionary>
<ResourceDictionary Source="/Skins/ListBox.xaml">
</ResourceDictionary>
</ResourceDictionary.MergedDicionaries>
</ResourceDictionary>
</Application.Resources>