Я в основном использую код this, и я успешно добавляю CheckBox
es (вместо ComboBox
, который приведен в примере) к моему View
. Однако проблема заключается в том, что я хочу иметь возможность настраивать (разные Content
, переплет и т. Д.) Те CheckBox
es. Прямо сейчас, когда я добавляю CheckBox
, он добавляет значение по умолчанию, которое определено в моем DataTemplate
.Как добавить пользовательские элементы управления в WPF с использованием MVVM и DataTemplate?
DataTemplate
:
<DataTemplate DataType="{x:Type local:CurrencyViewModel}">
<StackPanel Orientation="Vertical">
<CheckBox Content="Default"/>
</StackPanel>
</DataTemplate>
CurrencyViewModel
- код здесь не используется программой, и я не знаю, почему, но я уверен, что это проблема
class CurrencyViewModel : INotifyPropertyChanged
{
public CurrencyViewModel(ICurrency currency)
{
CheckBox currencyCheckBox = new CheckBox()
{
Content = currency.Name,
};
OnPropertyChanged("CurrenciesList");
}
MainViewModel
:
public MainViewModel()
{
foreach (ICurrency currencyin GetAllCurrencies())
{
CurrenciesList.Add(new CurrencyViewModel(currency));
}
}
private ObservableCollection<CurrencyViewModel> _CurrenciesList = new ObservableCollection<CurrencyViewModel>();
public ObservableCollection<CurrencyViewModel> CurrenciesList
{
get
{ return _CurrenciesList; }
set
{
_CurrenciesList = value;
OnPropertyChanged("CurrenciesList");
}
}
Наличие CheckBox в ViewModel вызывает некоторые звуковые сигналы ... – goobering
@goobering жесткого кодирования их не может быть и речи. Есть ли лучший подход, чем этот? –
Для начала избавитесь от CheckBox в вашей виртуальной машине. Вы должны хранить только имя как строку в вашем CurrencyViewModel. Затем установите свойство Content CheckBox в DataTemplate в {Binding Name}. – goobering