これについて非常に混乱しました-答えが本当に明白である場合は申し訳ありませんが、私はプログラミングにまったく慣れていません。
メイン ビュー内のコンテンツ コントロールに読み込まれるビューとして設定されたユーザー コントロールがあります。ユーザー コントロール (SetView と呼ばれる) のデータ コンテキストは、MainView で設定されます。SetView を UserControlVM (SetVM と呼ばれる) にバインドできます。
SetVM で、作成したクラスの ObservableCollection をロードします。
public class WeightSet : Weights
{
public string BodyArea { get; set; }
public string ExerciseType { get; set; }
public int SetNumber { get; set; }
public static ObservableCollection<int> Reps { get; set; }
#region Constructor
//This is the main constructor
public WeightSet(string bodyarea, string exerciseType, int setNumber)
{
BodyArea = bodyarea;
ExerciseType = exerciseType;
SetNumber = setNumber;
Reps = new ObservableCollection<int>();
AddReps();
}
#endregion Constructor
#region Methods
public void AddReps()
{
for (int i = 1; i < 100; i++)
{
Reps.Add(i);
}
}
#endregion Methods
私の SetView には、ItemsSource が ListView である
public ObservableCollection<WeightSet> Sets
ListView の xaml は次のとおりです。
<UserControl x:Class="CalendarTest.SetView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:forcombo="clr-namespace:CalendarTest.Model.Repository.Local_Data"
xmlns:VM="clr-namespace:CalendarTest.ViewModel"
mc:Ignorable="d"
d:DesignHeight="165" d:DesignWidth="300">
<Grid >
<StackPanel>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding CurrentExercise}" Width="100" Height="40"></Label>
<Label Content="{Binding BodyArea}" Width="100" Height="40"></Label>
</StackPanel>
<ListView ItemsSource="{Binding Sets}">
<ListView.View>
<GridView>
<GridViewColumn Header="Set Number" DisplayMemberBinding="{Binding Path=SetNumber}" Width="100"></GridViewColumn>
<GridViewColumn Header="Select Reps" Width="120">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox Width="100" ItemsSource="{Binding Source={x:Static forcombo:WeightSet.Reps }}" ></ComboBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=Reps}"></GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</StackPanel>
</Grid>
SetView をロードすると、セット番号のリストと staticlist を含むコンボボックスが表示されます。ここにショットがあります:
コンボボックスの選択したアイテムをViewModelにバインドできないようです。選択した項目を WeightSet クラスに設定する方法はありますか? 選択した番号を保存できるようにする必要がありますか?
ComboBox の数はユーザーによって決定されるため、プロパティにバインドすることはできません。私の現在のデザインに対するヒントや修正は大歓迎です