According to their documentation “Link below” to set their date time picker to military time you have to create a new culture. We are using the culture below, as you can see from the screen shot it got it half way right but I think it would be better without the AM & PM after it.I attached a screen shot of the clock. We just want to remove the AM and PM.
CultureInfo cultureInfo = new CultureInfo("en-US");
cultureInfo.DateTimeFormat.ShortTimePattern = "H:mm";
cultureInfo.DateTimeFormat.LongTimePattern = "H:mm";
cultureInfo.DateTimeFormat.PMDesignator = "";
cultureInfo.DateTimeFormat.AMDesignator = "";
http://www.telerik.com/help/wpf/raddatetimepicker-features-formatting.html
<
UserControl.Resources
>
<
Helpers:RequiredValueStyleSelector
x:Key
=
"RequiredFieldStyleSelector"
/>
<
Style
TargetType
=
"telerik:GridViewDataColumn"
>
<
Setter
Property
=
"CellStyleSelector"
Value
=
"{StaticResource RequiredFieldStyleSelector}"
/>
</
Style
>
</
UserControl.Resources
>
within our User Control
all is working as expected but if comment this in usercontrol out and put the same code
<
Helpers:RequiredValueStyleSelector
x:Key
=
"RequiredFieldStyleSelector"
/>
<
Style
TargetType
=
"telerik:GridViewDataColumn"
>
<
Setter
Property
=
"CellStyleSelector"
Value
=
"{StaticResource RequiredFieldStyleSelector}"
/>
</
Style
>
into generic.xaml nothing happens
Any suggestions?
PS. in Helper.dll attributes look like
[assembly: ThemeInfo(
ResourceDictionaryLocation.None,
ResourceDictionaryLocation.SourceAssembly
)]
public
Dictionary<
string
,
string
> MyTypes
{
get
{
return
myTypes; }
}
public
void
InitializeCriteria(SelectionCriteria criteria)
{
var culture = Thread.CurrentThread.CurrentUICulture.ToString();
base
.InitializeStandardSelectionCriteria(criteria, culture);
// Load the Types
var mTypes = MyTypes.Select(c =>
new
Tuple<
string
,
string
>(c.Key, c.Value));
Array.ForEach(mTypes.ToArray(), criteria.MyTypes.Add);
var defaultMyType = criteria.MyTypes.FirstOrDefault();
if
(defaultMyType !=
null
)
{
criteria.MyTypes= defaultMyType .Item1;
}
}
protected
override
void
OnInitialize(ESEntities entities)
{
base
.OnInitialize(entities);
LoadMyTypes(entities);
LoadSomeOtherData(entities);
}
private
void
LoadMyTypes(ESEntities entities)
{
myTypes =
new
Dictionary<
string
,
string
>()
{
{
""
, Resources.Resources.NoneLabel },
{
"D"
, Resources.Resources.DMessage },
{
"F"
, Resources.Resources.FMessage},
{
"H"
, Resources.Resources.HMessage },
{
"I"
, Resources.Resources.IMessage },
{
"L"
, Resources.Resources.LMessage } };
}
<
GroupBox
x:Name
=
"LGroup"
Header
=
"{x:Static Resources:Resources.OptionsL}"
>
<
telerik:RadComboBox
x:Name
=
"attenuationComboBox"
ToolTip
=
"{x:Static Resources:Resources.OptionsDesired}"
Height
=
"23"
VerticalAlignment
=
"Top"
ItemsSource="{Binding Criteria.MyTypes,
Mode
=
OneWay
,
NotifyOnSourceUpdated
=
True
,
NotifyOnTargetUpdated
=
True
,
UpdateSourceTrigger
=
PropertyChanged
}"
SelectedValue
=
"{Binding Criteria.MyType, Mode=TwoWay}"
IsEnabled
=
"{Binding SelectionOptions.CEnabled}"
DisplayMemberPath
=
"Item2"
SelectedValuePath
=
"Item1"
/>
</
GroupBox
>
<DataTemplate x:Key="AppointmentItemContentTemplate"> <Grid> <Border> <Border.Style> <Style> <Style.Triggers> <DataTrigger Binding="{Binding ProductCategory}" Value="Building"> <Setter Property="Border.Background" Value="CornflowerBlue"></Setter> </DataTrigger> </Style.Triggers> </Style> </Border.Style> <Grid> <TextBlock Margin="8,2" HorizontalAlignment="Stretch" TextWrapping="Wrap" Text="{Binding Subject}" Grid.Column="1" /> <TextBlock Margin="8,2" HorizontalAlignment="Stretch" TextWrapping="Wrap" Text="{Binding ProductCategory}" Grid.Column="1" /> </Grid> </Border> </Grid> </DataTemplate>
// 1) Classes that define each of the levels (NodeItem being the base class)
public
class
NodeItem
{
public
string
Name {
get
;
set
; }
public
string
Path {
get
;
set
; }
}
public
class
SourceDirectoryItem : NodeItem
{
public
SourceDirectoryItem()
{
this
.Children =
new
ObservableCollection<NodeItem>();
}
public
ObservableCollection<NodeItem> Children {
get
;
set
; }
}
public
class
SourceFileItem : NodeItem
{
public
SourceFileItem()
{
this
.Functions =
new
ObservableCollection<NodeItem>();
}
public
ObservableCollection<NodeItem> Functions {
get
;
set
; }
}
public
class
FunctionItem : NodeItem
{
}
// 2) XAML
<telerik:RadTreeListView
AutoGenerateColumns=
"False"
ItemsSource=
"{Binding Nodes}"
>
<telerik:RadTreeListView.ChildTableDefinitions>
<telerik:TreeListViewTableDefinition ItemsSource=
"{Binding Children}"
>
<telerik:TreeListViewTableDefinition.ChildTableDefinitions>
<telerik:TreeListViewTableDefinition ItemsSource=
"{Binding Children}"
>
<telerik:TreeListViewTableDefinition ItemsSource=
"{Binding Functions}"
/>
</telerik:TreeListViewTableDefinition>
</telerik:TreeListViewTableDefinition.ChildTableDefinitions>
</telerik:TreeListViewTableDefinition>
</telerik:RadTreeListView.ChildTableDefinitions>
<telerik:RadTreeListView.Columns>
<telerik:GridViewDataColumn DataMemberBinding=
"{Binding Name}"
Header=
"NAME"
>
</telerik:GridViewDataColumn>
</telerik:RadTreeListView.Columns>
</telerik:RadTreeListView>
// 3) In the VM there is nothing special, this is how I populate the nodes:
private
void
InitNodes()
{
SourceDirectoryItem root =
new
SourceDirectoryItem() { Name =
"c:\\"
, Path = Name };
SourceDirectoryItem firstLevel =
new
SourceDirectoryItem() { Name =
"c:\\folder1"
, Path = Name };
SourceDirectoryItem secondLevel01 =
new
SourceDirectoryItem() { Name =
"c:\\folder1\\temp"
, Path = Name };
SourceDirectoryItem secondLevel02 =
new
SourceDirectoryItem() { Name =
"c:\\folder1\\programfiles"
, Path = Name };
firstLevel.Children.Add(secondLevel01);
firstLevel.Children.Add(secondLevel02);
root.Children.Add(firstLevel);
SourceFileItem sf =
new
SourceFileItem();
sf.Name =
"foo.cs"
;
sf.Path =
"c:\\temp"
;
sf.Functions.Add(
new
FunctionItem() { Name =
"Method001"
});
sf.Functions.Add(
new
FunctionItem() { Name =
"Method002"
});
sf.Functions.Add(
new
FunctionItem() { Name =
"Method003"
});
secondLevel01.Children.Add(sf);
SourceFileItem sf1 =
new
SourceFileItem();
sf1.Name =
"bar.cs"
;
sf1.Path =
"c:\\programfiles"
;
sf1.Functions.Add(
new
FunctionItem() { Name =
"AnotherMethod"
});
secondLevel02.Children.Add(sf1);
this
.Nodes.Add(root);
}
private
ObservableCollection<NodeItem> nodes;
public
ObservableCollection<NodeItem> Nodes
{
get
{
return
this
.nodes;
}
set
{
this
.nodes = value;
this
.OnPropertyChanged(
"Nodes"
);
}
}
internal
WndMain()
{
InitializeComponent()
this
.GridViewLocalizations.MouseMove +=
new
MouseEventHandler(GridViewLocalizations_MouseMove);
}
void
GridViewLocalizations_MouseMove(
object
sender, MouseEventArgs e)
{
}
"GridViewLocalizations_MouseMove
" does not get called on moving the mouse over the GridView. Why?
How can I trap MouseMove events on a GridView?
And why can't I write outside of this code block anyway?? Man, Telerik sometimes...