Hi Ich versuche, den Standardwert für ComboBox festlegen.Standardwert für ComboBox
XAML:
<ComboBox Name="StatusCombo"
Style="{StaticResource statusComboStyle}"
SelectedValuePath="StatusMsg"
SelectedValue="{Binding Path=SelectedStatus}"/>
I caliburn.Micro verwenden. Ich binde List<string, StatusItem>
an ComboBox, es funktioniert gut.
Der Status Artikel ist einfach Klasse, hier ist es:
public class StatusItem
{
public string StatusMsg { get; set; }
public BitmapImage StatusImg { get; set; }
}
App.xaml
ich leere Zeichenkette in App.xaml
<System:String x:Key="empty"></System:String>
statusComboStyle definieren hier:
<Style x:Key="statusComboStyle" TargetType="{x:Type ComboBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path= SelectedStatus}" Value="{StaticResource empty}">
<Setter Property="SelectedIndex" Value="0"/>
</DataTrigger>
</Style.Triggers>
</Style>
Aber etwas muss falsch sein, weil ich diesen Compiler-Fehler erhalten: Ich habe frist Artikel in comboBox
{"No matching constructor found on type 'System.String'. You can use the Arguments or FactoryMethod directives to construct this type."}
at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at Spirit.Views.LogOnView.InitializeComponent() in c:\Users\Jan\Documents\Visual Studio 2010\Projects\C#\Pokec_Messenger\ver.beta\Pokec__Messenger\Spirit_Caliburn_Micro_v1.0\Views\LogOnView.xaml:line 1
at Spirit.Views.LogOnView..ctor() in C:\Users\Jan\Documents\Visual Studio 2010\Projects\C#\Pokec_Messenger\ver.beta\Pokec__Messenger\Spirit_Caliburn_Micro_v1.0\Views\LogOnView.xaml.cs:line 24
ich überprüfen, in Daten-Trigger wenn SelectedStatus leerer String, wenn der Wert leere Zeichenfolge .
Was passiert, wenn Sie nicht die 'SelectedIndex' Eigenschaft stelle ausdrücklich? Der Standardwert der Eigenschaft, an die Sie binden, sollte ausreichen. – ChrisF
Ein Setter für SelectedIndex wird nicht funktionieren, da, wie ich annehme, Sie an die ItemsSource der ComboBox gebunden sind. Stattdessen müssen Sie SelectedStatus zunächst in Ihrem Ansichtsmodell festlegen, worauf ChrisF hinweist. – HappyNomad