C# - WPF class 获取所有资源并填充列表框
C# - WPF class get all resources and fill listbox
我有 class 人获得了所有资源名称。这是代码:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
namespace Helper
{
public static class callResources
{
public static ObservableCollection<string> callAllResources()
{
var properties = typeof(Properties.Resources).GetProperties(
System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Static);
ObservableCollection<string> col = new ObservableCollection<string>();
foreach (var propertyInfo in properties)
{
var s = propertyInfo.Name;
if (s != "ResourceManager" && s != "Culture")
{
col.Add(s);
}
}
return col;
}
}
}
在MainWindows.cs中有这个代码:
public ObservableCollection<string> resourcesListBox
{
get
{
return callResources.callAllResources();
}
}
如果我调用 resourcesListBox,我在 queryListBox 中只有一行。
在 MainWindow.xaml 中有这个但它不起作用 :
<ListBox x:Name="queryListBox" HorizontalAlignment="Left" Height="155" Margin="18,10,0,0" SelectionMode="Single" VerticalAlignment="Top" Width="389" ItemsSource="{Binding Path = resourcesListBox}" SelectionChanged="listBox_SelectionChanged"/>
试试这个方法:
stringList.ForEach(item => listBox1.Items.Add(item))
因此,首先您需要将 class 设置为静态,这样您就可以从后面的代码中调用它而无需创建新实例。
其次,您需要在 callAllResources 方法中 return 类似列表或 ObservableCollection 的内容,并将所有名称放入此列表或 ObservableCollection 中。
然后您可以从后面的代码中调用此方法,它return是资源名称的列表或 ObservableCollection。
呼叫资源class:
public static class callResources
{
public static ObservableCollection<string> callAllResources()
{
var properties = typeof(Properties.Resources).GetProperties(
System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Static);
ObservableCollection<string> col = new ObservableCollection<string>();
foreach (var propertyInfo in properties)
{
var s = propertyInfo.Name;
if (s != "ResourceManager" && s != "Culture")
{
col.Add(s);
}
}
return col;
}
}
隐藏代码:
public ObservableCollection<string> resourcesListBox
{
get
{
return callResources.callAllResources();
}
}
Xaml代码:
<ListBox x:Name="Listbox1" ItemsSource="{Binding Path=resourcesListBox}"/>
我有 class 人获得了所有资源名称。这是代码:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
namespace Helper
{
public static class callResources
{
public static ObservableCollection<string> callAllResources()
{
var properties = typeof(Properties.Resources).GetProperties(
System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Static);
ObservableCollection<string> col = new ObservableCollection<string>();
foreach (var propertyInfo in properties)
{
var s = propertyInfo.Name;
if (s != "ResourceManager" && s != "Culture")
{
col.Add(s);
}
}
return col;
}
}
}
在MainWindows.cs中有这个代码:
public ObservableCollection<string> resourcesListBox
{
get
{
return callResources.callAllResources();
}
}
如果我调用 resourcesListBox,我在 queryListBox 中只有一行。
在 MainWindow.xaml 中有这个但它不起作用 :
<ListBox x:Name="queryListBox" HorizontalAlignment="Left" Height="155" Margin="18,10,0,0" SelectionMode="Single" VerticalAlignment="Top" Width="389" ItemsSource="{Binding Path = resourcesListBox}" SelectionChanged="listBox_SelectionChanged"/>
试试这个方法:
stringList.ForEach(item => listBox1.Items.Add(item))
因此,首先您需要将 class 设置为静态,这样您就可以从后面的代码中调用它而无需创建新实例。
其次,您需要在 callAllResources 方法中 return 类似列表或 ObservableCollection 的内容,并将所有名称放入此列表或 ObservableCollection 中。
然后您可以从后面的代码中调用此方法,它return是资源名称的列表或 ObservableCollection。
呼叫资源class:
public static class callResources
{
public static ObservableCollection<string> callAllResources()
{
var properties = typeof(Properties.Resources).GetProperties(
System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Static);
ObservableCollection<string> col = new ObservableCollection<string>();
foreach (var propertyInfo in properties)
{
var s = propertyInfo.Name;
if (s != "ResourceManager" && s != "Culture")
{
col.Add(s);
}
}
return col;
}
}
隐藏代码:
public ObservableCollection<string> resourcesListBox
{
get
{
return callResources.callAllResources();
}
}
Xaml代码:
<ListBox x:Name="Listbox1" ItemsSource="{Binding Path=resourcesListBox}"/>