Jestem względnie niski na krzywej dla WPF i Caliburn.Micro.Jak wykonać caliburn.micro powiązanie modelu widoku z wybraną wartością combobox?
Moim celem jest przeniesienie powiązania wybranego elementu combobox z kodu ShellView z modelem widoku, tak samo jak jest już w przypadku kolekcji przedmiotów combobox.
XAML:
<Window x:Class="EomDatabaseUtility.Views.ShellView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Eom Tool Database Utility" Height="350" Width="525">
<Grid>
<DataGrid AutoGenerateColumns="False" Height="258" HorizontalAlignment="Left" Margin="12,41,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="479" />
<Button Content="Execute" Height="23" HorizontalAlignment="Left" Margin="416,12,0,0" VerticalAlignment="Top" Width="75" x:Name="Execute" />
<ComboBox Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" VerticalAlignment="Top" Width="120" x:Name="CatalogName" SelectedValuePath="{Binding Path=SelectedCatalogName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</Window>
Code Behind (gdzie celem jest, aby nie trzeba dodawać żadnego kodu, jeśli uderstand poprawnie):
namespace EomDatabaseUtility.Views
{
using System.Windows;
public partial class ShellView : Window
{
public ShellView()
{
InitializeComponent();
}
// --> This should go in the view model, Right?
private string selectedCatalogName;
public string SelectedCatalogName
{
get { return selectedCatalogName; }
set { selectedCatalogName = value; }
}
}
}
Widok Model (obecnie dostarczanie kolekcji przedmiotów do combobox, jak również obsługi zdarzeń przycisku):
namespace EomDatabaseUtility.ViewModels
{
using Caliburn.Micro;
using System.Collections.Generic;
public class ShellViewModel : PropertyChangedBase
{
public List<string> CatalogName
{
get
{
return new List<string> { "foo", "bar" };
}
}
public void Execute()
{
System.Windows.MessageBox.Show("hello");
}
}
}
dziękuję! Mam to działa z właściwością SelectedItem, ale nie SelectedCatalogName - jednak jest to po prostu bonus ... –
Ah, możesz spróbować nazwać nazwy katalogowe combobox, a następnie mieć właściwość CatalogNames i SelectedCatalogName. Spodziewałbym się, że to zadziała. – devdigital
Tak, to się udało ... lubię! –