Hello everyone!
I want to let my users display a Speed field: this will be a custom field, of course Speed = Distance / Time.
The problem I have is that some of my records are incomplete (have only either distance or time populated), but those records are still being used.
From what I understand, when I get an aggregate value the aggregation function is always set to sum, and incomplete records are still being put into the sum function (even if the other value is null).
I would like to be able to do both of these:
Thanks for your input!
public class CalculatedSpeedCalculatedField : CalculatedField
{
private RequiredField distance;
private RequiredField time;
public CalculatedSpeedCalculatedField()
{
this.Name = "CustomCalculatedSpeed";
this.DisplayName = "Custom Calculated Speed";
this.distance = RequiredField.ForProperty("distance");
this.time = RequiredField.ForProperty("time");
}
protected override IEnumerable<RequiredField> RequiredFields()
{
return new List<RequiredField>
{
this.distance,
this.time,
};
}
protected override AggregateValue CalculateValue(IAggregateValues aggregateValues)
{
var aggregateDistance = aggregateValues.GetAggregateValue(this.distance);
var aggregateTime = aggregateValues.GetAggregateValue(this.time);
if (aggregateDistance.IsError())
{
return aggregateDistance;
}
else if (aggregateTime.IsError())
{
return aggregateTime;
}
double dist = aggregateDistance.ConvertOrDefault<double>();
double tim = aggregateTime.ConvertOrDefault<double>();
return new DoubleAggregateValue(dist / tim);
}
}
Hi,
I have a radgridview which I have configured to sort using "telerik.RadGridView.SortDescriptors" based on whether a checkbox is tick or untick. However, upon ticking/unticking the checkbox, the radgridview does not sort based on the condition that I have specified. May I ask for the solution for this?
I have a record Pitch (see below)
[TypeConverter(typeof(PitchTypeConverter))]
public sealed record Pitch(double MinValue, double MaxValue) : IParsable<Pitch>
{
public static readonly Pitch Empty = new(0, 0);
public static Pitch Parse(string s, IFormatProvider provider)
=> throw new NotImplementedException();
public static bool TryParse([NotNullWhen(true)] string s, IFormatProvider provider, [MaybeNullWhen(false)] out Pitch result)
=> throw new NotImplementedException();
public override string ToString()
=> $"{MinValue}-{MaxValue}";
}
As you can see , I also have a TypeConverter (currently not fully implemented, but to show the problem it is sufficient).
public sealed class PitchTypeConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
=> base.CanConvertFrom(context, sourceType);
public override bool CanConvertTo(ITypeDescriptorContext context, [NotNullWhen(true)] Type destinationType)
=> destinationType == typeof(string);
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
=> base.ConvertFrom(context, culture, value);
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
=> value?.ToString() ?? Pitch.Empty.ToString();
public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues)
=> base.CreateInstance(context, propertyValues);
public override bool GetCreateInstanceSupported(ITypeDescriptorContext context)
=> base.GetCreateInstanceSupported(context);
public override bool IsValid(ITypeDescriptorContext context, object value)
=> base.IsValid(context, value);
public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes)
=> base.GetProperties(context, value, attributes);
public override bool GetPropertiesSupported(ITypeDescriptorContext context)
=> base.GetPropertiesSupported(context);
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
=> base.GetStandardValues(context);
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
=> base.GetStandardValuesExclusive(context);
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
=> base.GetStandardValuesSupported(context);
}
The Pitch lives inside a ViewModel and is correctly displayed in the RadPropertyGrid, so in that sense everthing works fine.
[Category("Conditions")]
[Description("Sets the minimum/maximum allowed pitch limit.")]
public Pitch PitchLimit
{
get => GetProperty(Pitch.Empty);
set => SetProperty(value);
}
[Category("Conditions")]
public bool RequiresDE
{
get => GetProperty<bool>();
set => SetProperty(value);
}
when I now edit values in the RadPropertyGrid, the RequiresDE works when pressing enter or selecting the checkbox. It doesn't work however when I edit the value for the Pitch property. I can see that the SetProperty for RequiresDE is called, but when editing the PitchLimit the SetProperty is not called.
I honestly out of ideas to find out why the RequiresDE is called and the PitchLimit isn't.
Any help is appreciated.
Thanks
Hi,
We recently upgraded from 2022.3.912 to 2025.1.211 and it appears that VirtualGrid HeaderSizeNeeded is no longer called after we change VirtualGrid ColumnWidth to flush the cache of column widths. Is this a bug or is there some other way we should be forcing a recalculation of the column widths? Thanks in advance.
__Jason
Hello,
in the "Installing License Key" guide it is specified the license key is personal. But in the "Adding the License Key to CI/CD Services" section it is suggested to create an environment variable to store the license key value. Now because the CD/CD platform in my company is located in cloud and it is shared between all the developers I suppose we need to ask to one of our developers to share with everybody else his personal license key in order to set it as an environment variable in cloud. In my opinion this use case reveals a sort of mismatch in the usage of license key as a "personal". Is there a way to avoid to use a personal license key as a environment variable?
Thanks,
Alcide
Hi,
I have some struggle with context menu binding. The problem is that I cant bind Command from CustomerViewModel to a RadMenuItem in a Context menu.
Here is my code:
public
class
CustomerViewModel : ViewModelBase
{
private
ObservableCollection<Customer> _customers;
public
ICommand AddCom {
get
;
set
; }
public
ICommand DelCom {
get
;
set
; }
public
CustomerViewModel()
{
AddCom =
new
DelegateCommand(Add);
DelCom =
new
DelegateCommand(Del);
}
private
void
Add(
object
o)
{
Customers.Add(
new
Customer(){Id=Customers.Count,
Name=
"Customer "
+ Customers.Count.ToString()} );
OnPropertyChanged(() =>
this
.Customers);
}
private
void
Del(
object
o)
{
Customers.Remove((Customer) o);
OnPropertyChanged(() =>
this
.Customers);
}
public
ObservableCollection<Customer> Customers
{
get
=>
this
._customers;
set
{
if
(
this
._customers == value)
return
;
this
._customers = value;
this
.OnPropertyChanged(() =>
this
.Customers);
}
}
}
and XAML
<
Window
x:Class
=
"CustomListBoxDragDropBehavior.MainWindow"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
xmlns:local
=
"clr-namespace:CustomListBoxDragDropBehavior"
xmlns:mc
=
"http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable
=
"d"
Title
=
"MainWindow"
Height
=
"350"
Width
=
"525"
>
<
d:Window.DataContext
>
<
local:CustomerViewModel
/>
</
d:Window.DataContext
>
<
Window.Resources
>
<
telerik:RadContextMenu
x:Key
=
"Menu"
>
<
telerik:RadMenuItem
Header
=
"Add customer"
Command
=
"{Binding ??? }"
/>
<
telerik:RadMenuItem
Header
=
"Remove customer"
Command
=
"{Binding ???}"
CommandParameter
=
" ??? "
/>/>
</
telerik:RadContextMenu
>
<
Style
x:Key
=
"ListBoxItem"
TargetType
=
"telerik:RadListBoxItem"
>
<
Setter
Property
=
"telerik:RadContextMenu.ContextMenu"
Value
=
"{StaticResource Menu}"
/>
</
Style
>
</
Window.Resources
>
<
Grid
>
<
telerik:RadListBox
ItemContainerStyle
=
"{StaticResource ListBoxItem}"
ItemsSource
=
"{Binding Customers, Mode=TwoWay}"
DisplayMemberPath
=
"Name"
>
</
telerik:RadListBox
>
</
Grid
>
</
Window
>
I tried few combination like
<telerik:RadMenuItem Header="Item" Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=DataContext.AddCom }" />
with no success. Also I need to pass current customer to a DelCom as parameter.
Please advise.
Hello,
I use the Telerik TreeListView. I would like to implement auto resizing for the header cells. In my app, there is the possibility to change the language. Some of the header texts may be changed by this action.
If a text becomes longer after changing the language (e. g. the German word "Haus" is replaced by the English word "House"), the width of the column gets bigger. That means, auto resizing to a bigger width exists..
But after changing back to German (the header content becomes shorter), there is no auto resizing to a smaller width.
Is there an event I can check or a property for the TreeListView?
Thank you very much.
Best regards,
Alex