我有一个名为 Channel 的类,它具有以下属性:channelName
, (更多但与此问题无关)和两个List<double>
(xValues
, yValues
)。
public class Channel
{
public string channelName;
public List<double> xValues= new List<double>();
public List<double> yValues= new List<double>();
}
我还有一个名为 File 的类,其属性为:fileName
, ObservableCollection<Channel>
listOfChannels
. File 有一个名为 read() 的方法;它在内部创建 Channel 类的对象以读取数据,根据数据的不同,通道数量会可变,并存储在列表xValues
和yValues
数据中。
public class File
{
public string fileName{ get; set; }
public ObservableCollection<Canal> channels{ get; set; }
public void read() {//stuff}
}
在我的程序中,我创建了一个ComboBox
以这种方式绑定到该数据的方法:
<ComboBox x:Name="comboFile"
ItemsSource="{Binding myListOfChannels}"
DisplayMemberPath="channelName"
SelectedValuePath="channelName"
SelectedItem="{Binding selectedChannel}" />
其中myListOfChannels
和selectedChannel
定义为:
public ObservableCollection<Canal> myListOfChannels { get; set; }
public Canal selectedChannel { get; set; }
我稍后在代码中正确地实例化了它们。
当我单击一个按钮时,文件会加载并创建一个新的 class 对象File
。这是我的exampleFile
。
private void openButton_Click(object sender, RoutedEventArgs e)
{
File exampleFile= new File();
Channel exampleChannel= new Channel();
exampleFile.fileName= @"C:\Users\Path\myFile.txt"; //I haven't created OpenDialog yet
exampleFile.read();
myListOfChannels = new ObservableCollection<Channel>();
foreach (Channel mychannel in exampleFile.channels)
{
myListOfChannels .Add(mychannel);
}
selectedChannel = exampleFile.channels[0];
comboFile.DataContext = this;
}
这是从其他语言翻译过来的,语法上可能会有轻微的错误,但它可以工作。拜托,我不想完全重新设计这个,还有其他限制。我的问题是是否可以删除冗余分配(myListOfChannels
和selectedChannel
,foreach
循环等)并直接绑定我刚刚创建的数据exampleFile
,如下所示:
<ComboBox x:Name="comboFile"
ItemsSource="{Binding exampleFile.channels}"
DisplayMemberPath="exampleChannel.channelName"
SelectedValuePath="exampleChannel.channelName"
SelectedItem="{Binding selectedChannel}" />
我是这里的新手,所以如果你真的能帮助我写作,那就太好了。我已经阅读了几个数据绑定教程,但我无法弄清楚这一点。
顺便提一句。这可能很重要:所有这些代码都在UserControl
. 在我MainWindow.xaml
的只是一个实例UserControl
。
我已尽力解释我想要什么,但如果有不清楚的地方,就问它。谢谢你。