14
저는 WPF와 Caliburn.Micro의 곡선이 비교적 작습니다.보기 모델을 선택한 값으로 콤보 박스에 caliburn.micro 바인딩하는 방법?
내 목표는 콤보 박스의 항목 컬렉션에 대한 것과 동일한 쉘 뷰 코드에서 뷰 모델로 콤보 박스 선택 항목의 바인딩을 이동하는 것입니다.
XAML :
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; }
}
}
}
보기 모델을 (: (목표 만약 내가 제대로 uderstand, 코드를 추가 할 필요가 없습니다 것입니다) 뒤에
<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>
코드 현재 단추 이벤트 처리기뿐만 아니라 콤보 상자에 항목 모음 제공) :
당신의ComboBox
이 catalogName로의 이름이 때문에 Caliburn.Micro 규칙을 찾을 것이다, 사실 <ComboBox x:Name="CatalogName" ... SelectedItem="{Binding SelectedCatalog}" />
public class ShellViewModel : PropertyChangedBase
{
private string selectedCatalog;
public List<string> CatalogName
{
get
{
return new List<string> { "foo", "bar" };
}
}
public string SelectedCatalog
{
get
{
return this.selectedCatalog;
}
set
{
this.selectedCatalog = value;
this.NotifyOfPropertyChange(() => this.SelectedCatalog);
}
}
:
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");
}
}
}
는
감사합니다. SelectedItem 속성을 사용하지만 SelectedCatalogName은 사용하지 않습니다.하지만 어쨌든 보너스 일뿐입니다. –
아, Combobox CatalogNames의 이름을 지정한 다음 CatalogNames 속성과 SelectedCatalogName을 사용해보십시오. 나는 그것이 일하기를 기대할 것이다. – devdigital
옙, 그랬지 .. 나는 좋아한다! –