Estoy relativamente bajo en la curva tanto para WPF como para Caliburn.Micro.¿Cómo hacer el modelo de vinculación de vista de caliburn.micro al valor seleccionado de combobox?
Mi objetivo aquí es mover el enlace del elemento seleccionado del combobox del código de ShellView al modelo de vista, al igual que para la colección de elementos del 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>
Código Detrás (donde el objetivo es no tener que añadir ningún código, si uderstand correctamente):
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; }
}
}
}
Ver Modelo (actualmente suministrando la colección de artículos al combobox así como a un manejador de eventos de botón):
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");
}
}
}
gracias! Lo conseguí trabajando con la propiedad SelectedItem, pero no SelectedCatalogName, sin embargo, eso es solo una bonificación de todos modos ... –
Ah, podría intentar nombrar el cuadro combinado CatalogNames, y luego tener una propiedad CatalogNames y SelectedCatalogName. Yo esperaría que eso funcione. – devdigital
sí, eso lo hizo .. me gusta! –