D
Dark-Water
Gast
Hallo ich habe da ein Problem, ich habe mir einen ColorPicker ComboBox für meine Modern-W8-App gebastelt und mittlerweile ist er auch schön schlank geworden, aber er funktioniert leider nur mit einen zusätzlichen Objekt.
Jetzt wollte ich dass ganz ohne Objekt und direkt mit einen Dictionary bauen,
aber ich komme nicht an Key und Value rann, bzw. sind Sie immer leer.
Bin für jede Hilfe dankbar

Ressourcen der Seite (in XAML)
Der eigentliche ComboBox Eintrag (einer von vielen, in XAML)
und natürlich der Code (in C#):
wie gesagt Key und Value sind immer leer, aber es befinden sich 144 Einträge in der ComboBox, allerdings halt ohne Inhalt und mit farbloser Box.
Veileicht habt ihr ja ne Idee
Hier mal die vorherige funktionierende Variante mit extra Object
Ressourcen der Seite (in XAML)
Der eigentliche ComboBox Eintrag (einer von vielen, in XAML)
und natürlich der Code (in C#):
Jetzt wollte ich dass ganz ohne Objekt und direkt mit einen Dictionary bauen,
aber ich komme nicht an Key und Value rann, bzw. sind Sie immer leer.
Bin für jede Hilfe dankbar



Ressourcen der Seite (in XAML)
Code:
<Page.Resources>
<DataTemplate x:Key="MyComboBoxColorTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="50"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Key}"/>
<Rectangle Grid.Column="1" Fill="{Binding Value}"/>
<Border Grid.Column="1" BorderThickness="1.5" BorderBrush="Black"/>
</Grid>
</DataTemplate>
</Page.Resources>
Der eigentliche ComboBox Eintrag (einer von vielen, in XAML)
Code:
<ComboBox ItemsSource="{Binding}" ItemTemplate="{StaticResource MyComboBoxColorTemplate}"/>
und natürlich der Code (in C#):
Code:
Dictionary<string, SolidColorBrush> allColors = new Dictionary<string, SolidColorBrush>();
foreach(PropertyInfo color in typeof(Colors).GetRuntimeProperties())
allColors.Add(color.Name, new SolidColorBrush((Color) color.GetValue(null)));
this.DataContext = allColors;
wie gesagt Key und Value sind immer leer, aber es befinden sich 144 Einträge in der ComboBox, allerdings halt ohne Inhalt und mit farbloser Box.
Veileicht habt ihr ja ne Idee
Ergänzung ()
Hier mal die vorherige funktionierende Variante mit extra Object
Ressourcen der Seite (in XAML)
Code:
<Page.Resources>
<DataTemplate x:Key="MyComboBoxColorTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="50"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding ColorName}"/>
<Rectangle Grid.Column="1" Fill="{Binding ColorBrush}"/>
<Border Grid.Column="1" BorderThickness="1.5" BorderBrush="Black"/>
</Grid>
</DataTemplate>
</Page.Resources>
Der eigentliche ComboBox Eintrag (einer von vielen, in XAML)
Code:
<ComboBox ItemsSource="{Binding}" ItemTemplate="{StaticResource MyComboBoxColorTemplate}"/>
und natürlich der Code (in C#):
Code:
public class ColorObject
{
public string ColorName { get; set; }
public SolidColorBrush ColorBrush { get; set; }
public ColorObject(PropertyInfo color)
{
ColorName = color.Name;
ColorBrush = new SolidColorBrush((Color) color.GetValue(null));
}
}
public sealed partial class ColorPage
{
public ColorPage()
{
List<ColorObject> allColors = new List<ColorObject>();
foreach(PropertyInfo color in typeof(Colors).GetRuntimeProperties())
allColors.Add(new ColorObject(color));
InitializeComponent();
this.DataContext = allColors;
}
}
Zuletzt bearbeitet von einem Moderator: