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.