我有一個名爲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>();
}
我也有一類名爲文件,有屬性:fileName
,ObservableCollection<Channel>
listOfChannels
。文件有一個名爲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; }
我他們實例稍後在代碼中正確使用。
當我點擊一個按鈕時,文件加載並創建一個新類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
的一個實例。
我已經盡力解釋我想要什麼,但是如果有什麼不清楚的地方就問一下。謝謝。
謝謝!我可以刪除那個foreach循環並直接綁定ExampleFile。有可能綁定另一個UserControl的東西?例如,我有myControl1和myControl2。可以選中1中的複選框,具體取決於是否在2中選中了其他chechbox? (有點偏離主題,抱歉) – Sturm