我想知道它是否可能,或者只是我希望有一些不可实现的东西。
我正在解释我的问题:
我有Datagrid
这么简单:
<DataGrid Background="Transparent" RowBackground="MidnightBlue"
HorizontalGridLinesBrush="White" VerticalGridLinesBrush="White"
CanUserReorderColumns="False" AutoGenerateColumns="False"
SelectionMode="Single" CanUserSortColumns="False"
ItemsSource="{Binding Patrols}"
SelectedItem="{Binding SelectedPatrol}">
<DataGrid.Columns>
<DataGridTextColumn CellStyle="{DynamicResource DataGridCell}"
EditingElementStyle="{DynamicResource DataGridTextBox}"
Binding="{Binding Phone}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock FontWeight="ExtraBold" FontSize="20"
Text="Gsm"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Height="30" Width="30"
Visibility="{Binding Path=DataContext, Converter={StaticResource IsNamedObjectVisibilityConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType=DataGridRow}}"
Command="{Binding Path=DataContext.InsertOrUpdateCommand, RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}}"
ToolTip="Enregistrer">
<Image Source="../../Images/Save.png"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</Grid>
viewModel中有我的属性:
private ObservableCollection<Patrol> _patrols;
public ObservableCollection<Patrol> Patrols
{
get { return _patrols; }
set { Set(() => Patrols, ref _patrols, value); }
}
private Patrol _selectedPatrol;
public Patrol SelectedPatrol
{
get { return _selectedPatrol; }
set { Set(() => SelectedPatrol, ref _selectedPatrol, value); }
}
private ICommand _insertOrUpdateCommand;
public ICommand InsertOrUpdateCommand
{
get { return _insertOrUpdateCommand = _insertOrUpdateCommand ?? new RelayCommand(InsertOrUpdatePatrol); }
}
然后我的函数我应该从selectedItem属性中检索我的新对象:
private void InsertOrUpdatePatrol()
{
var patrolProcessor = new PatrolProcessor();
patrolProcessor.InsertOrUpdatePatrol(SelectedPatrol);
RefreshPatrolList();
}
我想在这里实现的是添加一行并直接在我的binded属性SelectedPatrol
的viewmodel中检索它,而不必选择我的行。
目前,当我点击我的行按钮时,我的viewmodel端只有一个空对象。但是如果我离开当前的选择然后按下新行中的按钮,那么我的对象就会填满。 我错过了什么吗?
提前感谢您的回答。
Cya guyz。