プロパティを持つ Channel というクラスがあります: channelName
、 (より多く、この質問には関係ありません) 、および 2 つ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
。ファイルには 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
and selectedChannel
、foreach
ループなど)を削除し、作成したばかりの からデータを直接バインドできるかどうかについてです。次のexampleFile
ようなものです。
<ComboBox x:Name="comboFile"
ItemsSource="{Binding exampleFile.channels}"
DisplayMemberPath="exampleChannel.channelName"
SelectedValuePath="exampleChannel.channelName"
SelectedItem="{Binding selectedChannel}" />
私はここでは非常に初心者なので、実際に執筆を手伝ってもらえれば、それは素晴らしいことです. データバインディングのチュートリアルをいくつか読みましたが、これがわかりません。
ところで。これは重要かもしれません: このコードはすべてUserControl
. 私MainWindow.xaml
の中ではその例にすぎませんUserControl
。
私は自分が何を望んでいるのかを説明するために最善を尽くしましたが、何かが明確でない場合は、それを聞いてください. ありがとうございました。