Hallo zusammen,
ich fange über Interaction.Triggers die MouseDoubleClick Events eines GridViews (Telerik RadGridView) ab und öffne dann das Detail / Bearbeitungsfenster des Eintrages.
(In etwa wie eine E-Mail in Outlook)
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick" >
<i:InvokeCommandAction Command="{Binding EditCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
Leider wird trotzdem ein weiterer Klick "ausgeführt" der dann im Bearbeitungsfenster einen Klick ausführt oder das Fenster in den Hintergrund geraten lässt.
Kann ich dieses Verhalten in irgendeiner Weise unterbinden?
A programmer is just a tool, which converts coffeine into code! 🙂
Versuche mal bitte nachzustellen, ob das Problem auch dann auftritt, wenn du nicht das RadGridView von Telerik verwendest.
Hallo p!lle,
ich habe soeben eines der Grids durch das Standard WPF DataGrid ausgetauscht.
Am Verhalten hat sich leider nichts geändert 😦
A programmer is just a tool, which converts coffeine into code! 🙂
Okay, kannst du dann den Code mal in abgespeckter Version zur Verfügung stellen?
Hallo p!lle,
anscheinend passiert das aber egal bei welchem Control ich einen Doppelklick tätige.
Der zweite Klick wird immer in das neue Fenster mit übertragen.
Die Fenster öffne ich folgendermaßen (Beispiel):
<Gridex:RadGridViewEx x:Name="radGridView" ItemsSource="{Binding ItemList}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick" >
<i:InvokeCommandAction Command="{Binding EditCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn UniqueName="Number" DataMemberBinding="{Binding Number}" Header="Nr.">
<telerik:GridViewDataColumn.AggregateFunctions>
<telerik:CountFunction Caption="Anzahl: " />
</telerik:GridViewDataColumn.AggregateFunctions>
</telerik:GridViewDataColumn>
</Gridex:RadGridViewEx>
CustomerTabViewModel vm = new Customers.CustomerTabViewModel(customer);
var vw = new CompositionTabView(vm);
ModalDialogService.Service.Show(vw, vm);
public class ModalDialogService : IModalDialogService
{
protected ModalDialogService() { }
private static IModalDialogService _Service = null;
public static IModalDialogService Service
{
get
{
if (_Service == null)
_Service = new ModalDialogService();
return _Service;
}
}
public void ShowDialog<TDialogViewModel>(IModalWindow view, TDialogViewModel viewModel, Action<TDialogViewModel> onDialogClose)
{
view.DataContext = viewModel;
if (onDialogClose != null)
{
view.Closed += (sender, e) => onDialogClose(viewModel);
}
view.ShowDialog();
}
public void ShowDialog<TDialogViewModel>(IModalWindow view, TDialogViewModel viewModel)
{
this.ShowDialog(view, viewModel, null);
}
public void Show<TDialogViewModel>(IModalWindow view, TDialogViewModel viewModel, Action<TDialogViewModel> onDialogClose)
{
view.DataContext = viewModel;
if (onDialogClose != null)
{
view.Closed += (sender, e) => onDialogClose(viewModel);
}
view.Show();
}
public void Show<TDialogViewModel>(IModalWindow view, TDialogViewModel viewModel)
{
this.Show(view, viewModel, null);
}
}
A programmer is just a tool, which converts coffeine into code! 🙂
Habs oben mal dazu editiert - sorry.
A programmer is just a tool, which converts coffeine into code! 🙂
Hmm, sieht jetzt erstmal nicht verkehrt aus.
Mit Telerik kann ich es nicht testen.
Mit einem normalen DataGrid tritt der Fehler bei mir auf jeden Fall nicht auf. 🤔