I want to add an apply button to the end of the "add new item" button when the NewRowPosition is set to e.g. Top.
After investigating which controls are involved, I tried to override the default style of DataCellsPresenter but the ItemsPresenter there seems to give me headache. Haven't used ItemsPresenter before so maybe the behavior is normal or it's modified elsewhere in your code.
Here's my modified style:
<
Style
x:Key
=
"customDataCellsPresenter"
TargetType
=
"{x:Type telerik:DataCellsPresenter}"
>
<
Setter
Property
=
"Template"
>
<
Setter.Value
>
<
ControlTemplate
TargetType
=
"{x:Type telerik:DataCellsPresenter}"
>
<
Grid
>
<
Grid
>
<
Grid.ColumnDefinitions
>
<
ColumnDefinition
Width
=
"*"
/>
<
ColumnDefinition
Width
=
"Auto"
/>
</
Grid.ColumnDefinitions
>
<
ItemsPresenter
Grid.Column
=
"0"
/>
<
Button
Grid.Column
=
"1"
>Click Me!</
Button
>
</
Grid
>
<
telerik:FrozenColumnsSplitter
x:Name
=
"PART_FrozenColumnsSplitter"
telerik:DragDropManager.AllowDrag
=
"True"
telerik:DragDropManager.AllowCapturedDrag
=
"True"
Cursor
=
"SizeWE"
telerik:TouchManager.DragStartTrigger
=
"TapHoldAndMove"
HorizontalAlignment
=
"Left"
IsTabStop
=
"False"
Stylus.IsFlicksEnabled
=
"False"
Stylus.IsPressAndHoldEnabled
=
"False"
>
<
telerik:StyleManager.Theme
>
<
telerik:Windows8TouchTheme
/>
</
telerik:StyleManager.Theme
>
</
telerik:FrozenColumnsSplitter
>
</
Grid
>
</
ControlTemplate
>
</
Setter.Value
>
</
Setter
>
<
Setter
Property
=
"IsTabStop"
Value
=
"False"
/>
<
Setter
Property
=
"ItemsPanel"
>
<
Setter.Value
>
<
ItemsPanelTemplate
>
<
telerik:GridViewCellsPanel
IsItemsHost
=
"True"
/>
</
ItemsPanelTemplate
>
</
Setter.Value
>
</
Setter
>
<
Setter
Property
=
"SnapsToDevicePixels"
Value
=
"True"
/>
</
Style
>
The ItemsPresenter seem to span over the button. I.e., the button is not visible. If I excplicitely change column's width from * to 128, the button is shown and the ItemsControl is smaller, but it is clipped after 128 pixels.
Is there another way to add a button to the end of the new item button? I want the user to be able to use the grid with only touch screen (i.e. no physical keyboard available). A cancel button would be needed also.
The optimal solution would be if the user taps elsewhere on the screen (not just the RadGridView control) but there's only one button on the screen ("Back") so that won't do. I.e., no other controls to transfer the focus to. Propably needs some sort of "global" click/tap listener and hit test class...
Ok,
I have a treeview that is LoadOnDemand. I have a HierarchicalDataTemplate and within it I define a RadContextMenu.
Currently, I am setting the ItemClicked event handler and calling the ViewModel from code behind. It all works, but I know I am being a bad boy calling the viewmodel from the codebehind.
Here's what I'd like to do:
Somehow, bind a command to the HierachicalDataTemplate so that I have a single function that receives all context menu clicks via a command. I should be able to sort out which context menu item was clicked in the command parameter (I think).
I have tried adding an EventToCommandBehavior to the HierachicalDataTemplate, but the compiler whines that nested properties are not supported.
I get this because I am already using EventToCommandBehavior in the treeview itself.
It seems that putting an additional EventToCommandBehavior in the HierarchicalDataTemplate is a no-go.
How can I receive commands from context menus generated in a loadondemand treeview and have it be MVVM friendly?
Thanks ... Ed
Right now I set up the label's margin in xaml
<
telerik:RadCartesianChart.HorizontalAxis
>
<
telerik:CategoricalAxis
MajorTickLength
=
"0"
LineStroke
=
"Transparent"
>
<
telerik:CategoricalAxis.LabelStyle
>
<
Style
TargetType
=
"TextBlock"
>
<
Setter
Property
=
"Margin"
Value
=
"20 10 15 20"
/>
</
Style
>
</
telerik:CategoricalAxis.LabelStyle
>
</
telerik:CategoricalAxis.LabelStyle
>
</
telerik:RadCartesianChart.HorizontalAxis
>
But I want to use property binding, so I created the property in View Model. The type of property is Thickness. But it is not working. I doubt that CategoricalAxis doesn't support it because I saw an example.
Thanks for advice.
In order to create a Custom editor with RadGridView by following a guide at: Create Custom Editor with RadGridView
It looks OK, but I would change the DataMemberBinding to Int32 instead of System.Windows.Media.Color, because System.Windows.Media.Color belongs to View class I don't really want to use it in my ViewModel. The converter looks like:
public
object
Convert(
object
value, Type targetType,
object
parameter, System.Globalization.CultureInfo culture)
{
int
num= System.Convert.ToInt32(value);
Color color;
byte
[] bytes = BitConverter.GetBytes(num);
color = Color.FromArgb(bytes[3], bytes[2], bytes[1], bytes[0]);
return
new
SolidColorBrush(color);
}
The converter get correct value for control, but when I change color from CorlorPicker, it get validation error in the cell and it says: Object of type "System.Windows.Media.Color" cannot be converted to type "System.Int32".
Any idea to resolve the problem? Thanks in advance.
I use gridview to display a datatable, when columns count is 2000 and rows count is 100, the UI can not render out,
there is a compromise solution is divide the datatable and display them by many gridview side by side,but when drag the horizontal scroll bar,it is not smooth
How to raise the rendering efficiency of gridview
and is there a probably render limit of the gridview , how many columns and how many rows
Hi,
I created a little UI that allow user to personalize the GridView properties.
I a section of this UI, a user can add a "Format Condition" defining an Expression (using RedExpressions) and some Style preferences, in example a row background.
When a FormatCondition class is created, in the constructor, I add a StyleRule to GridView.RowStyleSelector, I bind the StyleRuleCondition to FormatCondition.Condition and I'm waiting for BackGround changes:
Grid = g;
Css = (ConditionalStyleSelector)(g.RowStyleSelector ?? (g.RowStyleSelector = new ConditionalStyleSelector()));
StyleRule = new StyleRule();
StyleRule.Bind(StyleRule.ConditionProperty, Condition, converter: new Converters.FunctionConverter<string, System.Linq.Expressions.Expression>(Convert));
StyleRule.Style = new System.Windows.Style(typeof(GridViewRow)
, (Style)Application.Current.FindResource("GridViewRowStyle"));
Css.Rules.Add(StyleRule);
BackGroundColor.ValueChanged += (p) => ResetBg();
If BackGround change I edit the Background setter:
if (BgSetter != null) Style.Setters.Remove(BgSetter);
BgSetter = null;
if (!BackGroundColor.Value.HasValue) return;
BgSetter = new Setter(GridViewRow.BackgroundProperty, new SolidColorBrush(BackGroundColor.Value.Value));
Style.Setters.Add(BgSetter);
I think this is logically correct but Grid Style don't change until a rows refresh occours.
How I can force grid to re-evaluate row stryle rules?
marc.
When I click the grid view's "add new item" button, it shows a text box where to type in the value for the new row. I want show Window's on screen keyboard when the text box is clicked/tapped. I.e., I start a new Process that starts TabTip.exe for every other text box in my application.
Is there an easy way to do this with the grid view's text box or do I have to override a certain grid view's style? If so, which one?
I took a quick look at the your style structure topic but couldn't find the text box in the styles. I think the text box container is PART_DataCellPresenter because the text box was not displayed after I commented PART_DataCellPresenter out in the style.
The way I have handled this with other text boxes is that I have created a new class that extends TextBox. Then I subscribed to the PreviewLeftMouseUp event whose handler starts TabTip.exe. Maybe I can override some grid view's style to use my extended class or if you have a better solution.
If I set RadTreeViewItem Background it highlights the header only. How can I highlight the whole line?