过去两周我一直困扰着我,我试图制作一个可以在WPF控件中使用的列表。我似乎无法使代码正确。
我有Pro C# 5.0 and the .NET 4.5 Framework (Expert's Voice in .NET),第9章详细描述了它们是什么以及如何使用它们。但对于我的缺点,我不能为我的生活做我想做的事。
我想做什么。
string
数据列表我做了一个单独的课程,它只会是一个单一的列表BTW。
class CollectionClass
{
public static void ListOfStuff()
{
List<string> Stuff = new List<string>();
Stuff.Add("Stuff1");
Stuff.Add("Stuff2");
Stuff.Add("Stuff3");
Stuff.Add("Stuff4");
}
}
我的XAML是一个组合框,
<ComboBox Name="NamesComboBox" Background="Yellow" VerticalContentAlignment="Center" Grid.Row="1" Grid.Column="2" Margin="5"
DisplayMemberPath = "Value" SelectedValuePath="Key"
ItemsSource="{Binding UpdateSourceTrigger=PropertyChanged, Path=Stuff}"
SelectedItem="{Binding UpdateSourceTrigger=PropertyChanged, Path=SelectedStuff}"
要调用方法,
CollectionClass.ListOfStuff();
显然这不起作用,所以我希望有人可以指出我正确的方向。我是否需要拨打method
中的Main.xaml.cs
?
答案 0 :(得分:1)
修复示例的最简单方法是:
像这样创建编辑你的xaml网格:
<Grid>
<ComboBox Name="NamesComboBox" Background="Yellow" VerticalContentAlignment="Center" VerticalAlignment="Center" Margin="5" ItemsSource="{Binding UpdateSourceTrigger=PropertyChanged, Path=Value}">
</ComboBox>
</Grid>
然后像这样编辑文件xaml.cs
public MainWindow()
{
ObservableCollection<string> Stuff = new ObservableCollection<string>();
Stuff.Add("Stuff1");
Stuff.Add("Stuff2");
Stuff.Add("Stuff3");
Stuff.Add("Stuff4");
InitializeComponent();
NamesComboBox.ItemsSource = Stuff;//here you set the itemsSource
NamesComboBox.SelectionChanged += NamesComboBoxOnSelectionChanged;// or you can create this on xaml like SelectionChanged="NamesComboBoxOnSelectionChanged"
}
最后创建方法
private void NamesComboBoxOnSelectionChanged(object sender, SelectionChangedEventArgs selectionChangedEventArgs)
{
var selectedString = selectionChangedEventArgs.AddedItems;
}
此变量包含您在组合框中选择的字符串。
有很多方法可以解决你的例子,但在我看来这是最快的
答案 1 :(得分:1)
基于data binding combobox in wpf
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:CollectionClass x:Key="StuffColl"/>
</Window.Resources>
<Grid>
<ComboBox x:Name="comboBox" HorizontalAlignment="Left" Margin="164,137,0,0" VerticalAlignment="Top" Width="120" ItemsSource="{Binding Stuff, Source={StaticResource StuffColl}}" SelectedIndex="0"/>
</Grid>
</Window>
和班级
public class CollectionClass
{
public List<string> Stuff { get; set; }
public CollectionClass()
{
Stuff = new List<string>();
Stuff.Add("A");
Stuff.Add("B");
Stuff.Add("C");
Stuff.Add("D");
}
}