Eine UWP ComboBox generiert eine StackOverflowException.StackOverflowException in UWP ComboBox
<Grid Name="CutoutsGrid"
<ListView
<ComboBox
ItemsSource="{x:Bind CutoutsList}"
SelectedItem="{x:Bind CutShape,Mode=TwoWay}"
/>
</ListView>
</Grid>
CutShape und CutoutsList sind in der Ansichtsmodell
public class ViewModel : ViewModelBase
{
string _CutShape = default(string);
public string CutShape { get { return _CutShape; } set { Set(ref _CutShape, value); } }
public List<Cutout> CutoutsList { get { return MatboardService.GetCutoutsList(); } }
CutoutsList kehrt 5 Ausschnitte zur Auswahl.
public class Cutout : BindableBase
{
string _ItemCode = default(string);
public string ItemCode { get { return _ItemCode; } set { Set(ref _ItemCode, value); } }
string _ItemDescription = default(string);
public string ItemDescription { get { return _ItemDescription; } set { Set(ref _ItemDescription, value); } }
decimal _MinutesLabor = default(decimal);
public decimal MinutesLabor { get { return _MinutesLabor; } set { Set(ref _MinutesLabor, value); } }
}
Die Stackoverflow tritt in Page.g.cs
public static void Set_Windows_UI_Xaml_Controls_Primitives_Selector_SelectedItem(global::Windows.UI.Xaml.Controls.Primitives.Selector obj, global::System.Object value, string targetNullValue)
{
if (value == null && targetNullValue != null)
{
value = (global::System.Object) global::Windows.UI.Xaml.Markup.XamlBindingHelper.ConvertValue(typeof(global::System.Object), targetNullValue);
}
obj.SelectedItem = value;
}
In diesem Block value == ""
und targetNullValue == null
. Die Ausnahme auf der Linie tritt obj.SelectedItem = value;
Obwohl die ComboBox in einem Listview in einem Grid ist, die Ausnahme von
auf dem ersten Aufruf trittpublic List<Cutout> CutoutsList { get { return MatboardService.GetCutoutsList(); } }
jedoch, dass von vielen gefolgt wird (ich zählte 60, bevor ich aufgehört Zählen) Anrufe an
Set_Windows_UI_Xaml_Controls_Primitives_Selector_SelectedItem
Warum verursacht diese ComboBox eine StackOverflowException?
Wechsel zu Binding war alles, was es brauchte. Danke @Mikael Koskinen – Vague