I have a CLASS "Uid_Id_Name" and an ENUM "E_UidIdName_Type"
public class Uid_Id_Name
{
public string Uid { get; set; } = "";
public string Id { get; set; } = "";
public string Name { get; set; } = "";
}
public enum E_UidIdName_Type
{
Name,
NameShort
}
I have a ComboBox and his items are "Uid_Id_Name"
FIRST item: OK
SECOND item: "{x:Static my:E_UidIdName_Type.Name}" give me the error that must be converted to a string
<ComboBox SelectedValuePath="Uid" ItemTemplate="{StaticResource Uid_Id_Name_Template}">
<ComboBox.Items >
<BaseMontanari:Uid_Id_Name Uid="testUID" Id="testID" Name="testNAME"/>
<BaseMontanari:Uid_Id_Name Uid="{x:Static my:E_UidIdName_Type.Name}" Id="testID2" Name="testNAME2"/>
</ComboBox.Items>
</ComboBox>
How can i convert it ?
I saw similar question but none of them are regarding valorisation of class property with an enum
You cannot use a binding on a CLR property. It has to be a dependency property.
You should set the value of your data items programmatically:
Uid_Id_Name item = cmb.Items[1] as Uid_Id_Name;
if (item != null)
item.Uid = E_UidIdName_Type.Name.ToString();
XAML:
<ComboBox x:Name="cmb" SelectedValuePath="Uid" DisplayMemberPath="Uid">
<ComboBox.Items>
<BaseMontanari:Uid_Id_Name Uid="testUID" Id="testID" Name="testNAME"/>
<BaseMontanari:Uid_Id_Name Id="testID2" Name="testNAME2"/>
</ComboBox.Items>
</ComboBox>
XAML is a markup language. You may display the enum value using an ItemTemplate
though:
<ComboBox x:Name="cmb" SelectedValuePath="Uid">
<ComboBox.Items>
<BaseMontanari:Uid_Id_Name Uid="testUID" Id="testID" Name="testNAME"/>
<BaseMontanari:Uid_Id_Name Uid="{x:Null}" Id="testID2" Name="testNAME2"/>
</ComboBox.Items>
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock>
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Text" Value="{Binding Uid}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Uid}" Value="{x:Null}">
<Setter Property="Text" Value="{Binding
Source={x:Static my:E_UidIdName_Type.Name}}" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>