Bedienelemente wie die ListBox
haben eine ItemsSource
Eigenschaft aufnehmen, die SieWie Itemssource und Artikel
<ListBox x:Name="ListBoxColours" ItemsSource="{Binding Colours}" />
binden kann es auch eine Items
Eigenschaft jedoch hat, die dazu verwendet werden können Elemente im Code hinter
ListBoxColours.Items.Add("Red");
ich erstelle eine Custom, die eine ListBox
in hat. ich die ItemSource
in meiner Kontrolle ausgesetzt haben, damit der Benutzer die Elemente auf eine Eigenschaft in ihrerbinden.
<ListBox
x:Name="PART_ListBox"
ItemsSource="{Binding ItemsSource, RelativeSource={RelativeSource AncestorType=local:TextBoxComboControl}}"
SelectionMode="Single" />
...
public static readonly DependencyProperty ItemsSourceProperty = DependencyProperty.Register(
"ItemsSource", typeof(IEnumerable), typeof(TextBoxComboControl), new PropertyMetadata(default(IEnumerable)));
public IEnumerable ItemsSource
{
get { return (IEnumerable) GetValue(ItemsSourceProperty); }
set { SetValue(ItemsSourceProperty, value); }
}
...
<local:TextBoxComboControl ItemsSource="{Binding Colours}" />
würde Ich mag die Fähigkeit hinzuzufügen, für einen Benutzer hinter als auch Elemente im Code hinzufügen allerdings einhüllen sie Ich möchte keine Bindung verwenden. Ich frage mich, wie die ItemSource
/Items
Eigenschaften miteinander interagieren. Um es ihnen zu ermöglichen, entweder peoprty zu verwenden, müsste ich die ListBox
Elemente an beide Eigenschaften innerhalb meiner Kontrolle binden.
Aus dem Abschnitt Hinweise zu den [Elementen] (https://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.items (v = vs.110).aspx) page: * Beachten Sie, dass Sie entweder die Items-Eigenschaft oder die ItemsSource-Eigenschaft verwenden, um die Auflistung anzugeben, die zum Generieren des Inhalts von ItemsControl verwendet werden soll. Wenn die ItemsSource-Eigenschaft festgelegt ist, wird die Items-Auflistung schreibgeschützt und mit fester Größe erstellt. * – Clemens
Eigentlich würde ich sagen, dass Sie die Eigenschaft einfach "weiterleiten" müssten. '... Elemente {get => PART_ListBox.Items; set => PART_ListBox.Items = Wert; } '... – Fildor
@Fildor Beachten Sie, dass Elemente eine schreibgeschützte Eigenschaft ist. – Clemens