저는 Winforms에 익숙한 사용자이며 현재 WPF로 게임하고 있지만 조금 힘들어하고 있습니다. 2 개의 열이있는 DataGrid가 있습니다. 첫 번째 열은 내 개체의 "Name"속성에 바인딩 된 DataGridTextColumn입니다. 두 번째 열은 내 개체의 "전원"속성에 바인딩됩니다.DataGrid의 ComboBox를 다른 열의 값으로 채우기
사용자가 전원 열을 편집 할 때 첫 번째 항목의 "없음"외에도 첫 번째 열의 모든 이름을 나열하는 콤보 상자를 표시하려고합니다. 어떻게하면됩니까?
또한 사용자가 첫 번째 열의 이름을 업데이트하면 변경 내용이 전원 열에 반영됩니다. 가능한가? XAML에서
public partial class MainWindow : Window
{
ObservableCollection<MyObject> objects = new ObservableCollection<MyObject>();
public MainWindow()
{
InitializeComponent();
dgObjects.ItemsSource = objects;
}
}
public class MyObject
{
public String Name { get; set; }
public String Power { get; set; }
}
: 뒤에 코드에서
<DataGrid Name="dgObjects" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridComboBoxColumn Header="Power" Binding="????"/>
</DataGrid.Columns>
</DataGrid>
감사
당신은 설정하고자 및 변경하여 해당 컬렉션에'ComboBox.ItemsSource'을 결합 후 일반적으로 데이터 그리드를 바인딩하는 항목의 컬렉션을 포함하는 것과 동일한 수준에서, 다른 곳에서 컬렉션을 유지하고' 소스 '바인딩. 가장 일반적인 시나리오에서'RelativeSource' 바인딩은 부모'DataGrid'를 찾고'DataGrid.DataContext.SomeCollection'에 바인드하는 데 사용됩니다. 예를 들어'ItemsSource = "{Binding DataContext.PowerValues, RelativeSource = {RelativeSource AncestorType = {x : Type DataGrid}}" " – Rachel