0
WPF DataGrid를 사용하고 있습니다. 현재 선택한 행 앞뒤에 새 행을 삽입해야합니다. 어떻게해야합니까?wpf 데이터 격자에서 현재 선택된 행 앞뒤에 새 행 삽입
직접적인 방법이 있습니까?
WPF DataGrid를 사용하고 있습니다. 현재 선택한 행 앞뒤에 새 행을 삽입해야합니다. 어떻게해야합니까?wpf 데이터 격자에서 현재 선택된 행 앞뒤에 새 행 삽입
직접적인 방법이 있습니까?
나는 <DataGrid ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}">
과 같은 SelectedItem 속성과 함께 ObservableCollection
과 같은 것으로 바운드되어 있다고 가정합니다.
그래서보기 모델 또는 코드 숨김이 작업을 수행 할 수 있습니다
int currentItemPosition = Items.IndexOf(SelectedItem) + 1;
if (currentItemPosition == 1)
Items.Insert(0, new Item { Name = "New Item Before" });
else
Items.Insert(currentItemPosition - 1, new Item { Name = "New Item Before" });
Items.Insert(currentItemPosition + 1, new Item { Name = "New Item After" });
여기 전체 예제, 난 그냥 빈 WPF 프로젝트를 사용했다. 뒤에 코드 :
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Items = new ObservableCollection<Item>
{
new Item {Name = "Item 1"},
new Item {Name = "Item 2"},
new Item {Name = "Item 3"}
};
DataContext = this;
}
public ObservableCollection<Item> Items { get; set; }
public Item SelectedItem { get; set; }
private void Button_Click_1(object sender, RoutedEventArgs e)
{
int currentItemPosition = Items.IndexOf(SelectedItem) + 1;
if (currentItemPosition == 1)
Items.Insert(0, new Item { Name = "New Item Before" });
else
Items.Insert(currentItemPosition - 1, new Item { Name = "New Item Before" });
Items.Insert(currentItemPosition + 1, new Item { Name = "New Item After" });
}
}
public class Item
{
public string Name { get; set; }
}
XAML :
<Window x:Class="DataGridTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button Grid.Row="0" Content="Add Rows" Click="Button_Click_1" />
<DataGrid Grid.Row="1" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}" />
</Grid>
</Window>
당신이 다음 트릭을 할 것입니다 컬렉션을 질수 ObservableCollection에에 ItemSource를 바인딩하는 경우. 시도한 코드를 공유 할 수 있습니까? –
데이터 그리드의 ControlTemplate으로 재생하려했지만 성공하지 못했습니다. –