У меня есть ViewModel, который наследует от Conductor<T>.Collection.OneActive
. В представлении I я связывал DataGrid
с объектом Items
и с номером ContentControl
до ActiveItem
.Caliburn.Micro отключить событие кликов по умолчанию для ItemsControl
<ContentControl x:Name="ActiveItem" DockPanel.Dock="Top"/>
<DataGrid x:Name="Items" AutoGenerateColumns="False" SelectionMode="Single" DockPanel.Dock="Top"
cal:Message.Attach="[Event MouseDoubleClick] = [Action test]">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding CountryCode}" Width="10*"/>
<DataGridTextColumn Binding="{Binding Country}" Width="90*" />
</DataGrid.Columns>
</DataGrid>
</ContentControl>
Это работает отлично, за исключением одной вещи: я хочу, чтобы активировать DetailsViewModel
, когда один из ряда Сетка была двойной клик. Мой метод void test()
получает вызов, но я не могу отключить метод Click.
Любое предложение?
EDIT
Может быть, я не был достаточно ясен. Моя проблема - поведение по умолчанию Conductor<T>
. Он не должен активировать экран сведений для одного левого клика, но для двойного.
EDIT 2
По Nkosi
«s помощь, наконец, выяснили некоторые обходной путь: Просто изменила ContentControl связывание с ActiveItem
к ActiveScreen
.
<ContentControl x:Name="ActiveScreen" DockPanel.Dock="Top"/>
В ViewModel создал ActiveScreen
свойство:
private T mActiveScreen;
public T ActiveScreen
{
get { return mActiveScreen; }
set
{
mActiveScreen = value;
NotifyOfPropertyChange(() => ActiveScreen);
}
}
В связанном методе MouseDoubleClick
вы просто должны установить ActiveScreen
в ActiveItem
.
public void test()
{
ActiveScreen = ActiveItem;
}
Он активируется, потому что, как только вы выбираете элемент, он становится активным элементом, который активирует его. Даже если вы нажмете на один элемент и затем используйте клавиши со стрелками вверх и вниз, он активирует каждый выбранный элемент. – Nkosi
Я вижу, но как я могу отключить это поведение? – Smoke
Возможно, он активирует элементы при изменении выбора? – Smoke