xamlセクションのこのコードがあります
<ListBox Margin="0,0,-12,0" Visibility="Visible" ItemsSource="{Binding QuestionsCurrent.Answers}">
<ListBox.ItemTemplate>
<DataTemplate>
<local:TemplateSelectorPollPage Content="{Binding QuestionsCurrent.Answers}">
<local:TemplateSelectorPollPage.RadioButtonField>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="400" Margin="10">
<RadioButton></RadioButton>
<TextBlock Text="{Binding pavalue}" ></TextBlock>
</StackPanel>
</DataTemplate>
</local:TemplateSelectorPollPage.RadioButtonField>
<local:TemplateSelectorPollPage.RadioButtonTextField>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="400" Margin="10">
<RadioButton></RadioButton>
<TextBox Text="{Binding pavalue}" ></TextBox>
</StackPanel>
</DataTemplate>
</local:TemplateSelectorPollPage.RadioButtonTextField>
<local:TemplateSelectorPollPage.CheckBoxField>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="400" Margin="10">
<CheckBox></CheckBox>
<TextBlock Text="{Binding pavalue}" ></TextBlock>
</StackPanel>
</DataTemplate>
</local:TemplateSelectorPollPage.CheckBoxField>
<local:TemplateSelectorPollPage.CheckBoxTextField>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="400" Margin="10">
<CheckBox></CheckBox>
<TextBox Text="{Binding pavalue}" ></TextBox>
</StackPanel>
</DataTemplate>
</local:TemplateSelectorPollPage.CheckBoxTextField>
</local:TemplateSelectorPollPage>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
また、データ テンプレート セレクターを実装するための 2 つのクラスがあります。
public abstract class TemplateSelectorBase : ContentControl
{
public virtual DataTemplate SelectTemplate(object item, DependencyObject container)
{
return null;
}
protected override void OnContentChanged(object oldContent, object newContent)
{
base.OnContentChanged(oldContent, newContent);
ContentTemplate = SelectTemplate(newContent, this);
}
}
public class TemplateSelectorPollPage : TemplateSelectorBase
{
public DataTemplate CheckBoxField { get; set; }
public DataTemplate RadioButtonField {get;set;}
public DataTemplate CheckBoxTextField { get; set; }
public DataTemplate RadioButtonTextField { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
var answer = item as Answer;
if (answer != null)
{
var question = DataAccess.UtilsAccessDb.PpaDataAccessLib.Instance.RowsGet<Question>().Where(x => x.pqid == answer.pqid).FirstOrDefault();
if (question != null)
{
return question.pqtype == 1
? (answer.patype == 1 ? RadioButtonField : RadioButtonTextField)
: (answer.patype == 1 ? CheckBoxField : CheckBoxTextField);
}
}
return base.SelectTemplate(item, container);
}
}
OnNavigatedTo メソッドでのバインディングの呼び出し
App.PollViewModel.LoadData(firstQuestion.pid, firstQuestion.pqid);
DataContext = App.PollViewModel;
アプリケーションを実行すると、リストボックスに項目がありません。このコードの何が間違っていますか?