我有这个 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>
我有两个类用于实现数据模板选择器:
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;
当我运行应用程序时,列表框没有任何项目。这段代码有什么不正确的?