아무도 아직 SelectedItem = "Binding 속성"으로 선택된 것으로 comboboxitem을 설정하는 방법을 찾지 못한 것 같습니다.MVVM, WPF : 콤보 상자에서 선택한 항목을 설정하는 방법
콤보 박스 항목 소스 내의 ViewModel 객체에서 IsSelected 속성을 사용하는 솔루션입니까?
아무도 아직 SelectedItem = "Binding 속성"으로 선택된 것으로 comboboxitem을 설정하는 방법을 찾지 못한 것 같습니다.MVVM, WPF : 콤보 상자에서 선택한 항목을 설정하는 방법
콤보 박스 항목 소스 내의 ViewModel 객체에서 IsSelected 속성을 사용하는 솔루션입니까?
...
<ComboBox
ItemsSource="{Binding Path=AllItems}"
SelectedItem={Binding Path=CurrentItem, Mode=TwoWay} />
<TextBlock Text="{Binding Path=CurrentItem, Mode=TwoWay}" />
class public ItemListViewModel
{
public ObservableCollection<Item> AllItems {get; set;}
private Item _currentItem;
public Item CurrentItem
{
get { return _currentItem; }
set
{
if (_currentItem == value) return;
_currentItem = value;
RaisePropertyChanged("CurrentItem");
}
}
}
코드를 보지 않고 ComboBox에서 SelectedItem에 데이터를 바인딩 할 수없는 이유가 확실하지 않습니다. 아래는 현재 항목 관리가 내장 된 CollectionView를 사용하여 콤보 박스를 지원하는 방법을 보여줍니다. CollectionView는 현재 선택된 항목을 가져 오는 데 사용할 수있는 CurrentItem get 속성을 가지고 있습니다.
XAML :
<Window x:Class="CBTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<StackPanel>
<ComboBox
ItemsSource="{Binding Path=Names}"
IsSynchronizedWithCurrentItem="True">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<TextBlock Text="{Binding Path=Names.CurrentItem}" />
</StackPanel>
</Window>
코드 숨김
콤보 상자를 바인딩에 대한 우리의 성공적인 접근 방식은 다음과 같다using System.Collections.Generic;
using System.Windows;
using System.Windows.Data;
namespace CBTest
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
DataContext = new VM();
}
}
public class VM
{
public VM()
{
_namesModel.Add("Bob");
_namesModel.Add("Joe");
_namesModel.Add("Sally");
_namesModel.Add("Lucy");
Names = new CollectionView(_namesModel);
// Set currently selected item to Sally.
Names.MoveCurrentTo("Sally");
}
public CollectionView Names { get; private set; }
private List<string> _namesModel = new List<string>();
}
}
"... 이유를 확실하지 코드를 보지 않고 ComboBox의 SelectedItem에 데이터를 바인딩 할 수 없습니다 .... " do a 쉬운 구글은 매우 넓은 확산 문제. CollectionView는 내 경우에 총 오버 헤드입니다. 게다가 ObservableCollection
CollectionView는 ObservableCollection의 뷰일 수 있으므로 아무것도 걷어차기를해야합니다. CollectionView가 총 오버 헤드라는 것은 무엇을 의미합니까? CollectionView가 Current와 같이 필터링, 그룹화 및 정렬과 같은 다른 기능을 제공합니까? 나는 아직도 combobox에 selecteditem을 바인딩하는 문제가 무엇인지 모르겠다. –
CollectionView thats ;-)가 필요하지 않습니다. 컨트롤의 작업을 정렬하려면 내 경우 DataGrid에이 기능이 있습니다. CollectionView는 열 헤더를 클릭하여 정렬하지 않는 listview에 적합합니다. – msfanboy
이것은 이상합니다. 나는 내가 어떤 블로그에 대해 읽어 때문에 이전에 제안 정확히 한 맹세 할 수 ... 지금 나는 다시 시도하고 일했다 : P 을 누군가가 관심 XD 이다이 경우에 도움이 한편 // UI 컨트롤 에서 선택된 색인으로 새로 만든 Schoolclass를 설정하십시오. SelectedSchoolclassIndex = (Schoolclasses.Count! = 0)? Schoolclasses.Count - 1 : 0; – msfanboy
이 문제가 발생했습니다. 나는 2 개의 개별 콜렉션을 가지고 있고, equals 오퍼레이터를 잊어 버렸기 때문에 currentitem은 내가 XAML에서 바인드 한 콜렉션보다 다른 콜렉션에서 선택되었다. 따라서 equals를 구현하면 문제가 해결됩니다. 그러나 동일한 컬렉션에서 선택하면 문제도 해결됩니다. –