Я пытаюсь получить список элементов из БД и заполнить его в ComboBox
, используя EntityFramework и Prism MVVM,
он заполняет элементы, но текст не появляется при открытии ComboBox
?я сделал что-то не так в приведенном ниже коде.
И
Это правильный способ реализации шаблона MVVM?
пожалуйста, найдите UPDATE1 ниже:
CodeBehind:
public MainWindow()
{
InitializeComponent();
this.DataContext = new XViewModel();
}
Модель:
public class SpModel
{
public string SpName { get; set; }
public string SpID { get; set; }
}
ViewModel:
public class XViewModel : BindableBase
{
private List<SpModel> _spList;
public List<SpModel> SpList
{
get { return _spList; }
set { SetProperty(ref (_spList), value); }
}
}
public XViewModel()
{
FillDefaultData();
}
private void FillDefaultData()
{
using (JContext dc = new JContext())
{
var query = (from sp in dc.Sps
select new SpModel()
{
SpID = sp.SpID.ToString(),
SpName = sp.SpName
}).ToList();
if (query != null && query.Count() > 0)
SpList = query;
}
}
XAML:
<ComboBox x:Name="ddlSp" Height="38" Padding="2"
ItemsSource="{Binding SpList}"
SelectedValuePath="SpID"
DisplayMemberPath="SpName" />
ОБНОВЛЕНИЕ1
СТИЛЬ:
<Style x:Key="{x:Type ComboBoxItem}" TargetType="{x:Type ComboBoxItem}">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBoxItem}">
<Border Name="Border"
SnapsToDevicePixels="true">
<ContentPresenter
TextBlock.FontSize="14"
TextBlock.Foreground="Black"
TextBlock.FontWeight="Bold">
<ContentPresenter.Content>
<Grid>
Проблема в этой строке:
<TextBlock Text="{Binding Content}" />
..
</Grid>
</ContentPresenter.Content>
</ContentPresenter>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsHighlighted" Value="true">
<Setter TargetName="Border" Property="Background" Value="#B1B1B1"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>