목록보기 안에 포함 된 콤보 상자의 선택된 값을 바인딩해야하는이 문제가 있습니다. 콤보 상자에 항목을 표시하는 데 문제가 없습니다. 그러나 단추를 클릭 할 때 콤보 상자가 표시해야하는 항목을 지정하는 방법이 있었으면 좋겠습니다. 나는이 문제에 관한 여러 게시물이 있다고 생각하지만, 나는 내가 원하는 것을 정확히 얻을 수 없다. 여기 내 코드가있다.목록보기 (양방향)에서 WPF 콤보 상자에 바인딩
XAML :
<Grid>
<StackPanel Orientation="Vertical">
<ListView
x:Name="OptionsListView"
ItemsSource="{Binding MyObjectCollection}">
<ListView.Resources>
<DataTemplate x:Key="comboBoxTemplate">
<ComboBox
Margin="0,3"
x:Name="MyTypeComboBox"
SelectedValue="{Binding Path=SelectedType, Mode=TwoWay}">
<ComboBoxItem Content="ABC"/>
<ComboBoxItem Content="DEF"/>
<ComboBoxItem Content="XYZ"/>
</ComboBox>
</DataTemplate>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Header="Text-Sample"
Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Combo-Sample"
Width="100"
CellTemplate="{StaticResource comboBoxTemplate}" />
</GridView>
</ListView.View>
</ListView>
<Button Click="Button_Click">Click Me!</Button>
</StackPanel>
</Grid>
C# 코드 뒤에 :
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
OptionsListView.DataContext = this;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
//Something here that dictates what should be displayed in the combo box
}
List<MyObject> myObjectCollection = new List<MyObject>();
public List<MyObject> MyObjectCollection
{
get
{
myObjectCollection.Add(new MyObject("One"));
myObjectCollection.Add(new MyObject("Two"));
return myObjectCollection;
}
}
}
public class MyObject : INotifyPropertyChanged
{
private string _name;
public MyObject(string name)
{
// TODO: Complete member initialization
this._name = name;
}
public string Name
{
get
{
return _name;
}
}
string selectedType = string.Empty;
public string SelectedType
{
get
{
return selectedType;
}
set
{
selectedType = value;
this.NotifyChange("SelectedType");
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyChange(params object[] properties)
{
if (PropertyChanged != null)
{
foreach (string p in properties)
{
PropertyChanged(this, new PropertyChangedEventArgs(p));
}
}
}
#endregion
}
누군가가 나이 균열 도움이 될 수 있다면 나는 기꺼이 것입니다 ..
감사 램
고맙습니다 Howard .. 지금은 잘 작동합니다! 분명히 나는 그것에 묶이지 않은 값으로 콤보 박스를 설정하려고 노력했다. 그리고 지금, 내가 (당신이 제안한대로) 콤보 박스에 묶일 컬렉션을 지정했을 때, 그것은 매력처럼 작동하고 있습니다! 내가 맞습니까? ItemSource를 사용하여 콤보 박스에 데이터 바인딩하는 것이 여기 핵심 이었습니까? 고마워요! – Ram
:) 재미 있습니다. 당신은 환영합니다 – Howard