DataGrid WPF Sanallaştırma ve Komut CanExecute
Ben bir DataGrid ile ilgili bir sorun çerçeve .NET ile WPF uygulama üzerinde çalışıyorum
:
public ICommand MoveUpOrderPipeCommand
{
get
{
if (_moveUpOrderPipeCommand == null)
{
_moveUpOrderPipeCommand = new Command<OrderPipeListUIModel>(OnMoveUpOrderPipe, CanMoveUpOrderPipe);
}
return _moveUpOrderPipeCommand;
}
}
private bool CanMoveUpOrderPipe(OrderPipeListUIModel orderPipe)
{
if (OrderPipes == null || !OrderPipes.Any() || OrderPipes.First() == orderPipe)
return false;
return true;
}
Ve vardır: Her hat 2 komutları var
<DataGrid Grid.Row="1" IsReadOnly="True" ItemsSource="{Binding OrderPipes}" SelectionMode="Extended">
<DataGrid.Columns>
<DataGridTextColumn Header="Diam. (mm)" Binding="{Binding Diameter}" Width="120"> </DataGridTextColumn>
<DataGridTextColumn Header="Lg. (m)" Binding="{Binding Length}" Width="120"></DataGridTextColumn>
<DataGridTextColumn Header="Ep. (mm)" Binding="{Binding Thickness}" Width="120"></DataGridTextColumn>
<DataGridTextColumn Header="Ondulation" Binding="{Binding Ripple}" Width="120"></DataGridTextColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.MoveUpOrderPipeCommand}" CommandParameter="{Binding}">
</Button>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
:
Ve DataGrid moveDown için aynı komut (hat sonuncusu değilse denetimi yürütmek Can)
EnableRowVirtualization ile kılavuzumu true olarak sanallaştırırsam, aşağıdan kaymaya devam edersem (ilk satırlar artık görünmüyorsa) biraz sorun yaşıyorum ve sonra da en üste geri döner, bazen ilk satırın düğmeyi hareket ettirir DataGrid'i tıklayana kadar etkinleştir, ikinci veya üçüncü devre dışı bırak, etkin olmalı! i false EnableRowVirtualization ayarlarsanız, ben bu sorun yok
...
Sadece bu sorun hakkında konuşmak internette bir başka yazı bulundu, ancak .net framework DataGrid yoktur : http://www.infragistics.com/community/forums/t/15189.aspxBunu nasıl düzeltebilirim konusunda bir fikriniz var mı?
öncedenEdit teşekkür ederiz: Komut sınıfını
public class Command<T> : ICommand
{
private readonly Action<T> _execute;
private readonly Func<T, bool> _canExecute;
public Command(Action<T> execute) : this(execute, null)
{
}
public Command(Action<T> execute, Func<T, bool> canExecute)
{
if (execute == null)
throw new ArgumentNullException("execute", "Le délégué execute ne peut pas être nul");
this._execute = execute;
this._canExecute = canExecute;
}
public event EventHandler CanExecuteChanged
{
add
{
CommandManager.RequerySuggested += value;
}
remove
{
CommandManager.RequerySuggested -= value;
}
}
public bool CanExecute(object parameter)
{
return (_canExecute == null) ? true : _canExecute((T)parameter);
}
public void Execute(object parameter)
{
_execute((T)parameter);
}
}
CanExecute'niz başlatıldı mı? –
"Komut" sınıfının kodunu yazınız. –
Kaydırmada CanExecute çalışmaz – Tan