Hi. I write C# WPF MVVM Prism 6 application. I'm interested in RadTreeListView with buttons-column there. I defined the folowing XAML for buttons-column in RadTreeListView:
<telerik:RadTreeListView x:Name="Hierarchical" Grid.Row="2" Grid.Column="0" AutoGenerateColumns="False" AutoExpandItems="True" IsSynchronizedWithCurrentItem="True" CanUserReorderColumns="False" CanUserSortColumns="False" CanUserSortGroups="False" CanUserDeleteRows="False" CanUserInsertRows="False" IsFilteringAllowed="False" EnableLostFocusSelectedState="False" RowIndicatorVisibility="Collapsed" SelectionUnit="FullRow" ItemsSource="{Binding DeviceProfile}" Visibility="{Binding AreRegistersInHierarchyVisible}" SelectedItem="{Binding SelectedProfileElement}" >. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <!--Button-column "Read current value from outer device selected register"--> <telerik:GridViewDataColumn IsVisible="{Binding IsReadColumnButtonVisible}"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <telerik:RadButton Margin="5" Content="Read Register Current Value" Visibility="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type telerik:GridViewRow}}, Converter={StaticResource booleanToVisibilityConverter}}" Command="{Binding InitializeRegisterCurrentValueReadingCommand}"/> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> </telerik:GridViewDataColumn>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .</telerik:RadTreeListView>I use your BooleanToVisibilityConverter in Prism UserControl where the RadTreeListView is:
<UserControl.Resources> <telerik:BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter"/></UserControl.Resources>Below is the source code of 'InitializeRegisterCurrentValueReadingCommand' command that is in View Model to which the Prism UserControl binds to:
// The command definition.public DelegateCommand<object> InitializeRegisterCurrentValueReadingCommand { get; private set; }// The command logic method.private void initializeRegisterValueReading(object parameter){ // My custom C# code}// The command CanExecute method.private bool initializeRegisterValueReadingCanExecute(object parameter){ // Some bolean condition is.}// Here is creating of command inside View Model constructor.this.InitializeRegisterCurrentValueReadingCommand = new DelegateCommand<object>(this.initializeRegisterValueReading, this.initializeRegisterValueReadingCanExecute);Please see the screnshot in 'RadTreeListView_with_buttons.PNG' file attached. Where "Прочитать значение из регистра" button is "Read Register Value" button and "Записать значение в регистр" button is "Write Value To Register" button. "InitializeRegisterCurrentValueReadingCommand' command is bound to "Read Register Value" button. But when I pess (click) this button the command doesn't fire! I also tryed the following notation in XAML:
<telerik:EventToCommandBehavior.EventBindings> <telerik:EventBinding Command="{Binding InitializeRegisterCurrentValueReadingCommand}" EventName="Click" PassEventArgsToCommand="True"/></telerik:EventToCommandBehavior.EventBindings>But the result was the same pitiable-bad. But interestingly, when I create the handler of ButtonClick event (for button-cell) in code-behind, the the handler fires when the button is clicked! But my application is pure MVVM application! So how do I make the command fire when user clicks the button? Either with such markup:
<telerik:GridViewDataColumn IsVisible="{Binding IsReadColumnButtonVisible}"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <telerik:RadButton Margin="5" Content="Прочитать значение из регистра" Visibility="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type telerik:GridViewRow}}, Converter={StaticResource booleanToVisibilityConverter}}" Command="{Binding InitializeRegisterCurrentValueReadingCommand}"/> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> </telerik:GridViewDataColumn>or with such markup:
<telerik:GridViewDataColumn IsVisible="{Binding IsReadColumnButtonVisible}"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <telerik:RadButton Margin="5" Content="Прочитать значение из регистра" Visibility="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type telerik:GridViewRow}}, Converter={StaticResource booleanToVisibilityConverter}}"> <telerik:EventToCommandBehavior.EventBindings> <telerik:EventBinding Command="{Binding InitializeRegisterCurrentValueReadingCommand}" EventName="Click" PassEventArgsToCommand="True"/> </telerik:EventToCommandBehavior.EventBindings> </telerik:RadButton> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> </telerik:GridViewDataColumn>How do I make the command fire when user clicks the button? Please help solve the problem. Thank you very much in advance.